C# 抓取java webservice 抛出的异常 问题
最近在做一个项目 用的 C# 调用java的webservice
因为常常C#调的时候返回500 我们这边的人就想知道到底java那边到底是抛出啥子异常出来 在哪抛的。
目前: 在java webservice报500 或者505 的时候 知道到底具体异常是什么
下面是我调用java webservice的方法 请各位大牛帮忙解答
Encoding encoding = Encoding.GetEncoding("utf-8");
byte[] data = encoding.GetBytes(xml);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
//发送数据
request.Method = "POST";
request.ContentType = "application/soap+xml; charset=UTF-8";
request.ContentLength = data.Length;
Stream requestStream = request.GetRequestStream();
requestStream.Write(data, 0, data.Length);
requestStream.Close();
//接收返回值
HttpWebResponse res = (HttpWebResponse)request.GetResponse();
StreamReader sReader = new StreamReader(res.GetResponseStream(), System.Text.Encoding.UTF8);
string returnXml = sReader.ReadToEnd();
sReader.Close();
res.Close();
info.RESULT_TYPE = true;
info.RESULT_DATA = returnXml;
return info;
}
catch (HttpListenerException ex)
{
info.RESULT_DATA = ex.Message;
return info;
}
catch (WebException ex)
{
info.RESULT_DATA = ex.Message;
return info;
}
帮忙改改 。能不能再报500错或者505的时候把具体异常给抓出来 c# java
[解决办法]
向调用服务这些,记录日志是很重要的,有时候找一个问题找死人,就是因为没记录日志,有时候查看日志问题就迎刃而解
[解决办法]
HttpWebResponse res = (HttpWebResponse)webrequest.GetResponse();
if (res.StatusCode.ToString() == "500")
{
Console.WriteLine("等效于 HTTP 状态 500。System.Net.HttpStatusCode.InternalServerError 指示服务器上发生了一般错误。");
}
使用这个HttpStatusCode对象可判断出返回的状态为500,可做些处理。
但这是治标不治本的方法,还要是看看java那边出了什么异常。
[解决办法]
没有了,给web server吃掉了。
[解决办法]
反正客户端和服务器端通过http协议通讯,它所能知道的一切信息取决于服务器发给了它什么信息,你用一个抓包工具就能看到。
[解决办法]
所谓InnerException也是指,服务器返回了这样的异常信息,客户端的代理把它包装成一个InnerException对象放在Exception中给你。显然客户端和服务器端并不共享内存和机器状态,也不共享堆栈,或者可以连为一体,客户端只能得到服务器主动提供(经网络传输)的数据。