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的可能性最大.