を働いていないと、私は次のコードを使用するときのRESTful API である私は私のWebサービスウィッヒにJSON文字列を投稿しようとしているアプリのHttpClientをPostAsync()私のXamarinで
フォーム:
public static async Task<bool> SaveRolAsync(Methods Method, Role Rol)
{
try
{
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var uri = ("http://myservice.com/roles/");
HttpResponseMessage response = null;
try
{
var jSettings = new JsonSerializerSettings();
jSettings.NullValueHandling = NullValueHandling.Ignore;
jSettings.MissingMemberHandling = MissingMemberHandling.Ignore;
var JsonData = JsonConvert.SerializeObject(Rol);
var RoleContent = new StringContent(JsonData, Encoding.UTF8, "application/json");
if (Method == Methods.PUT || Method == Methods.PATCH)
{
response = await client.PutAsync(uri, RoleContent);
}
if (Method == Methods.POST)
{
response = await client.PostAsync(uri, RoleContent);
}
if (Method == Methods.DELETE)
{
throw new NotImplementedException();
}
return response.IsSuccessStatusCode;
}
catch (JsonException jse)
{
return false;
}
}
catch (Exception ex)
{
// Exceptions Throws here
// @T This line i got The request requires buffering data to succeed
return false;
}
}
例外がスローされます:
要求が成功するためにバッファリングデータを必要
スタックトレース:
{System.Net.WebException:要求は成功し にバッファリングデータが必要です。 System.Threading.Tasks.TaskFactory
1[TResult].FromAsyncCoreLogic (System.IAsyncResult iar, System.Func
2 [T、TResult] ENDFUNCTIONで0、 System.Action1[T] endAction, System.Threading.Tasks.Task
1 [TResult] : でSystem.Net.HttpWebRequest.EndGetResponse(System.IAsyncResult asyncResult)[0x00064]で約束、System.Booleanは同期が必要)[0x00014] in :0 ---例外がスローされた前の場所からのスタックトレースの終わり--- でSystem.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() [0x0000c] in :0で System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Taskタスク)[0x0004e]で :で0 System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(System.Threading.Tasks.Taskタスク)で0: 10 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Taskタスク)[0x0002e] 【0x0000b] で:System.Runtime.CompilerServices.ConfiguredTaskAwaitable で01+ConfiguredTaskAwaiter[TResult].GetResult () [0x00000] in <a66f207c1e5949e9a252c01e27bbd34e>:0 at System.Net.Http.HttpClientHandler+<SendAsync>c__async0.MoveNext() [0x0041e] in <566d6cf6576345098cb5e08ad43d5e78>:0 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() [0x0000c] in <a66f207c1e5949e9a252c01e27bbd34e>:0 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x0004e] in <a66f207c1e5949e9a252c01e27bbd34e>:0 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x0002e] in <a66f207c1e5949e9a252c01e27bbd34e>:0 at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x0000b] in <a66f207c1e5949e9a252c01e27bbd34e>:0 at System.Runtime.CompilerServices.ConfiguredTaskAwaitable
1 + ConfiguredTaskAwaiter [TResult] .GetResult ()[0x00000]:0 System.Net.Http.HttpClient + c__async0.MoveNextで() [0x000f3] in < 566d6cf6576345098cb5e08ad43d5e78>:0 ---例外がスローされた前の場所からのスタックトレースの終了--- でSystem.Runtime.ExceptionServices.ExceptionDisp atchInfo.Throw() [0x0000c]:0 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(System.Threading.Tasks.Taskタスク)[0x0004e] 中で:0 System.Runtime.CompilerServices.TaskAwaiterで での0 System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Taskタスク)[0x0000b]: で.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Taskタスク)[0x0002e] 0で のMyAPP.Webservice + d__4.MoveNext()[0x000d0]の の0:255のSystem.Runtime.CompilerServices.TaskAwaiter`1 [TResult] .GetResult() [0x00000] C:\ MyProject \ Cla sses \ Webservice.cs:140}
**また試した:SendAsync()Ty M.Wiśnickiは**
public static async Task<bool> SaveRolAsync(MediwareLib.Methods Method, Role Rol)
{
try
{
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var uri = (BaseRequestUrl + "roles/");
HttpResponseMessage response = null;
var request = new HttpRequestMessage();
try
{
var jSettings = new JsonSerializerSettings();
jSettings.NullValueHandling = NullValueHandling.Ignore;
jSettings.MissingMemberHandling = MissingMemberHandling.Ignore;
var JsonData = JsonConvert.SerializeObject(Rol);
var RoleContent = new StringContent(JsonData, Encoding.UTF8, "application/json");
if (Method == MediwareLib.Methods.PUT || Method == MediwareLib.Methods.PATCH)
{
request = new HttpRequestMessage(HttpMethod.Put, uri);
request.Content = RoleContent;
response = await client.SendAsync(request,
HttpCompletionOption.ResponseHeadersRead);
}
if (Method == MediwareLib.Methods.POST)
{
request = new HttpRequestMessage(HttpMethod.Post, uri);
request.Content = RoleContent;
response = await client.SendAsync(request,
HttpCompletionOption.ResponseHeadersRead);
}
if (Method == MediwareLib.Methods.DELETE)
{
throw new NotImplementedException();
// response = await client.DeleteAsync(uri + Rol.Id);
}
return response.IsSuccessStatusCode;
}
catch (JsonException jse)
{
Globals.Log("SaveRolAsync: " + jse.ToString());
return false;
}
}
catch (Exception ex)
{
Globals.Log("SaveRolAsync: " + ex.ToString());
return false;
}
}
あなたの研究は何を示しましたか?あなたは[要求はHttpClientを成功させるためにデータをバッファリングする必要がありますか?](http://stackoverflow.com/questions/40368724/the-request-requires-buffering-data-to-succeed-httpclient)と[HttpClientでヘッドリクエスト]を読んでいましたか? http://stackoverflow.com/questions/25509233/head-request-with-httpclient)?あなたはPUTでも 'if(Method == Methods.POST)'を送っていることに気がつきましたか?あなたのサービスはリダイレクトで応答していますか? – CodeCaster
私は他のstackoverflowの投稿を読んだが、私はGoogleの要求ではなくjsonの文字列を送信したい。 –
HTTPリクエストは、検索結果またはJSONデータを含むかどうかにかかわらず、HTTPリクエストです。 – CodeCaster