2017-11-13 8 views
-1

私はアプリケーションをで作成しています。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; 
}} 
+1

"機能しません"とはどういう意味ですか?エラーがスローされますか、ガベージデータを取り戻しますか? – redsoxfantom

答えて

1

[...]実際のエラーへのアプローチを取得する方法についての任意のアイデア?

「動作しない」と正確に何が起こっているかわからないようです。実際のエラーに近づく方法は、動作しないと報告されたときにこのコードで何が起こっているのかを突き止めることです。

ログがありますか?ログを確認します。例外がある場合は、正しい方向を指しているはずです。例外はありませんか?おそらく受信したデータのロギングを開始するかもしれません。ログはありませんか?ロギングを開始します。オンデマンドで再現できない断続的な障害を処理するための良い方法はありません。

関連する問題