【发布时间】:2015-06-06 12:49:10
【问题描述】:
我正在尝试调用 api 并检查它的响应,但是当传递了一些错误的值时,它会停止程序。我想在请求和响应期间添加异常,但不知道如何写入函数。
这就是我调用 REST 调用的方式
public dynamic APICalls(JObject ljson, string endpoints, string method)
{
var httpReq = (HttpWebRequest)HttprequestObject(endpoints, method);
using (var streamWriter = new StreamWriter(httpReq.GetRequestStream()))
{
streamWriter.Write(ljson);
streamWriter.Flush();
streamWriter.Close();
}
var httpResponse = (HttpWebResponse)httpReq.GetResponse();
var result = "";
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
result = streamReader.ReadToEnd();
}
return result;
//return "Success";
//not sure what to return
//here i have to add sql server code to enter into database
}
这是请求代码
public dynamic HttprequestObject(string endpoints, string method)
{
string url = Settings.API_TEST_VALUE + endpoints;
var httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
httpWebRequest.ContentType = "application/json";
httpWebRequest.Method = method;
return httpWebRequest;
}
在请求之前和响应之后,我想捕获异常。
此时我必须捕获异常
var httpResponse = (HttpWebResponse)httpReq.GetResponse();
如果有人在程序停止之前提示我如何捕捉它。
有400, 401,402错误,如果有问题API发送json
例如,在创建用户时:-- 电子邮件 id 已经存在
但这点会停止 json 并停止程序..
使用 try catch 会停止程序,我希望它运行并接收响应。
实际上,API 会发送错误。 例如,状态将是 ;---401 UNAUTHORIZED 并且响应将是
{ "reason": "Email already registered.", "success": false }
我改变了我的代码和
HttpWebResponse httpResponse;
try
{
//HttpWebResponse myHttpWebResponse = (HttpWebResponse)httpReq.GetResponse();
httpResponse = (HttpWebResponse)httpReq.GetResponse();
//myHttpWebResponse.Close();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
result = streamReader.ReadToEnd();
}
}
catch (WebException e)
{
Console.WriteLine("This program is expected to throw WebException on successful run." +
"\n\nException Message :" + e.Message);
if (e.Status == WebExceptionStatus.ProtocolError)
{
Console.WriteLine("Status Code : {0}", ((HttpWebResponse)e.Response).StatusCode);
Console.WriteLine("Status Description : {0}", ((HttpWebResponse)e.Response).StatusDescription);
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
return result;
//return "Success";
//not sure what to return
//here i have to add sql server code to enter into database
}
这是新代码,但我没有将 Json 作为返回值,所以我可以显示特定的错误。 对于下面的Json我应该写什么?
{ "reason": "邮箱已经注册。", "success": false }
请我是 C# 新手,如果有不清楚的地方请修改或提问? 谢谢你
【问题讨论】:
-
有一本关于 C# 编程语言的完整手册。在询问有关语言语法的基本问题之前,您应该先查看它。见C# Programming Guide。详细参考请见C# Reference。
标签: c# .net exception exception-handling