次のように、カスタム WebPost メソッドを持つ JavaScriptHelper クラスがあります。
public string WebPost(string url, string json)
{
#region
string responseData = "";
try
{
HttpWebRequest webRequest = System.Net.WebRequest.Create(url) as HttpWebRequest;
StreamWriter requestWriter = null;
webRequest.Method = "POST";
webRequest.ContentType = "application/json";
using (requestWriter = new StreamWriter(webRequest.GetRequestStream()))
{
requestWriter.Write(json);
}
using (StreamReader responseReader = new StreamReader(webRequest.GetResponse().GetResponseStream()))
{
responseData = responseReader.ReadToEnd();
}
webRequest = null;
}
catch (WebException ex)
{
LogBase.LogController.WriteError(ex);
}
catch (Exception ex)
{
LogBase.LogController.WriteError(ex);
}
return responseData;
#endregion
}
これを使用して、次のように POST 要求を ASP.NET WebAPI サービスに送信します。
RegisterModel model = new RegisterModel();
model.email = "abc@gmail.com";
model.oAuthId = "11111111";
model.oAuthType = "Facebook";
string jsonStr = JsonConvert.SerializeObject(model);
string response = new JavaScriptHelper().WebPost("http://localhost:9091/api/Authentication/authenticateoauth", jsonStr);
サービスはこの呼び出しを受け取ります。ユーザーが存在する場合は応答を返し、存在しない場合はユーザーを作成して応答を返します。
私が直面している問題は、ユーザーが存在する場合、すべてが正常に機能することです。クライアント (JSON) で応答を取得します。存在しない場合、サーバー上にユーザーを正しく作成しますが、クライアントは早期に中断し、応答を待ちません。次のエラーが表示されます。
System.Net.WebException was unhandled
HResult=-2146233079
Message=The remote server returned an error: (500) Internal Server Error.
Source=System
StackTrace:
at System.Net.HttpWebRequest.GetResponse()
リクエストの応答をもう少し待つにはどうすればよいですか?