日期:2014-05-17  浏览次数:20897 次

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