我正在开发一个Windows Phone 7应用程序,我需要在我们公司的REST api上提供一些数据。
我正在测试这个API调用,并遇到了一个我无法捕获的WebException。我的电话最初是在一个lambda中,所以我把它拉出来用于成员函数,但仍然没有运气。
错误字符串是“远程服务器返回错误:NotFound”。这不是意料之外的,我的应用尝试的URI可能无效,因为我搞砸了,或者因为我们的登台服务器已关闭。
如果我无法捕捉到这个异常,我该怎么检查我的请求是否失败?
这是我的玩具示例:
void TriggerApiCall()
{
var request = HttpWebRequest.Create(new Uri(
"http://api.ourcompany.com" +
"/stuff/" +
someParameterizedPath + "?" +
"firstParam=" + someClassMember +
"&secondParam=8badf00d"));
request.Method = "PUT";
request.BeginGetResponse(TryCall, request);
}
private void TryCall(IAsyncResult result)
{
HttpWebRequest request = result.AsyncState as HttpWebRequest;
var completed = result.IsCompleted;
WebResponse response = null;
try {
bool hasresp = request.HaveResponse;
response = request.EndGetResponse(result);
} catch (Exception e) {
System.Diagnostics.Debug.WriteLine(e); // Never reaches here,
// Exception propagates to top
}
response.Close();
}
答案 0 :(得分:0)
研究告诉我Silverlight 3及更高版本中有一个新的ClientHttp堆栈。
http://msdn.microsoft.com/en-us/library/dd920295(v=vs.95).aspx