读书人

C#使用HttpWebRequest发起SOAP请求返

发布时间: 2012-11-03 10:57:44 作者: rapoo

C#使用HttpWebRequest发起SOAP请求,返回结果中500错误的处理
使用如下方法:

C# code
 public string GetHtml(string url, string refUrl, string postData, bool isPost, CookieContainer cookieContainer)        {            if (string.IsNullOrEmpty(postData))            {                return GetHtml(url, cookieContainer);            }            byte[] byteRequest = Encoding.Default.GetBytes(postData);            HttpWebRequest httpWebRequest;            httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url);            httpWebRequest.CookieContainer = cookieContainer;            httpWebRequest.ContentType = contentType;            httpWebRequest.Referer = refUrl;            httpWebRequest.Accept = accept;            httpWebRequest.UserAgent = userAgent;            httpWebRequest.Method = isPost ? "POST" : "GET";            httpWebRequest.ContentLength = byteRequest.Length;            Stream stream = httpWebRequest.GetRequestStream();            stream.Write(byteRequest, 0, byteRequest.Length);            stream.Close();            HttpWebResponse httpWebResponse;                        httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();            Stream responseStream = httpWebResponse.GetResponseStream();            StreamReader streamReader = new StreamReader(responseStream, encoding);            string html = streamReader.ReadToEnd();            streamReader.Close();            responseStream.Close();            return html;        }


当使用这个方法做正常一般的Http请求,都OK。
但是当使用这个对有些SOAP做请求时,请求结果是返回http500错误,然后也同时返回了SOAP的请求结果

而这时上面方法中这句:
C# code
            httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();

就会引发服务器500错误,而导致httpWebResponse值不正确。

但是实际上这时 服务器是有返回值的,是告诉哪里出错的调试信息。

怎么办? 怎么能取到 那个返回的信息?



[解决办法]
不是很明白 帮你顶顶 等高手 过来帮你瞧瞧
[解决办法]
估计是你封装的XML有问题,或者SOAP请求有附加的HTTP头,你抓个包看看
[解决办法]
1,soap包 本身不符合对方要求格式
2,对方有鉴权.

1的可能性最大.

读书人网 >C#

热点推荐