从http调用中获得正确的响应,不例外
本文关键字:响应 调用 http | 更新日期: 2023-09-27 18:20:47
以下是我用于POST到RESTful web服务的代码。我的问题是最后一行。例如,我的服务器可以用不同的消息和相同的代码进行回复。现在,除非我得到200 OK,否则我在最后一行就会得到异常。
无论我得到什么代码,我都希望能够更好地访问响应标头等。这怎么可能?
var request = WebRequest.Create(Options.DitatServerUri + Options.DitatAccountId + "/integration/trip") as HttpWebRequest;
if (request == null) return false;
request.ContentType = "application/json";
request.Headers.Add(HttpRequestHeader.Authorization, "Basic " + Convert.ToBase64String(Encoding.UTF8.GetBytes(Options.DitatLoginName + ":" + Options.DitatPassword)));
request.Method = "POST";
var serializer = new JavaScriptSerializer();
var serializedData = serializer.Serialize(trip);
var bytes = Encoding.UTF8.GetBytes(serializedData);
request.ContentLength = bytes.Length;
var os = request.GetRequestStream();
os.Write(bytes, 0, bytes.Length);
os.Close();
var response = request.GetResponse();
示例:我收到WebException"无效操作",但服务器实际上发送了带有错误解释的消息。
基于Jon在上面的评论中所说的,为错误状态代码抛出的异常很可能是WebException
,根据MSDN页面,它具有响应和状态属性。因此,您可以通过以下方式获得响应:
WebResponse response = null;
try
{
response = request.GetResponse();
}
catch (WebException ex)
{
response = ex.Response;
}
为什么不捕获异常并进行适当的处理?
try
{
var response = request.GetResponse();
}
catch (WebException webEx)
{
Console.WriteLine("Error: {0}", ((HttpWebResponse)webEx.Response).StatusDescription);
}