私はアプリケーションをで作成しています。Xamarin.Formsは、SOAPサービスを使用しています。POSTメソッド;私は正確に動作するサービスの束を持って、実際には、これらの方法の一つは、複数のケースで情報を送信するために使用され、私の問題はこれに関連しています。一般的な非同期HttpClientメソッドが動作しないことがありますか?
私は以下のHttpClientメソッドを持っていますが、うまくいきません...残念ながら私はバックエンドコードにアクセスできません。
私の方法を改善する方法や、実際のエラーへのアプローチ方法については、どんな考えですか?私は毎回同じフィールドを送るので、私はここで立ち往生しています。
public async Task<string> InvokeAsync (string uri, string xmlSOAP) {
try {
using (var handler = new HttpClientHandler() { UseCookies = false })
using (var client = new HttpClient (new NativeMessageHandler())) {
client.DefaultRequestHeaders.Accept.Add (new MediaTypeWithQualityHeaderValue ("application/xml"));
client.DefaultRequestHeaders.Add ("Cache-Control", "no-cache, no-store, must-revalidate");
client.DefaultRequestHeaders.Add ("Pragma", "no-cache");
client.Timeout = TimeSpan.FromSeconds (timeout);
client.DefaultRequestHeaders.CacheControl.NoCache = true;
var req = new HttpRequestMessage (HttpMethod.Post, uri)
{
Content = new StringContent (xmlSOAP, Encoding.UTF8)
};
req.Content.Headers.ContentType = MediaTypeHeaderValue.Parse ("text/xml; charset=utf-8");
if (uri.ToLowerInvariant().Equals (jsessionUrlCheck)) {
if (jsession != null && jsession.Count > 0) {
foreach (var cookie in jsession) {
req.Headers.Add ("JSESSIONID", cookie);
}
}
jsession = null;
}
HttpResponseMessage response = await client.SendAsync (req);
string responseBodyAsText = response.IsSuccessStatusCode ? await response.Content.ReadAsStringAsync() : string.Empty;
if (!string.IsNullOrEmpty (responseBodyAsText))
{
return responseBodyAsText;
}
return null;
}
} catch (Exception e) {
Debug.WriteLine ("========= InvokeAsync Exception =========");
Debug.WriteLine ("Error: " + e.Message);
return null;
}}
"機能しません"とはどういう意味ですか?エラーがスローされますか、ガベージデータを取り戻しますか? – redsoxfantom