2017-05-08 10 views
1

My problemこのRest API uriエラーはなぜ発生しますか?

私はユニバーサルWindowsアプリケーションを持っており、残りのAPIを使用したいと思っています。 私はいつもこの中にエラーCS 4032を取得:それは非同期でないときは、そのメソッドを呼び出すことはできません同様

httpResponseBody = await httpClient.GetStringAsync(requestUri); 

コード全体

using System; 
using System.Collections.Generic; 
using System.IO; 
using System.Linq; 
using System.Runtime.InteropServices.WindowsRuntime; 
using Windows.Foundation; 
using Windows.Foundation.Collections; 
using Windows.UI.Xaml; 
using Windows.UI.Xaml.Controls; 
using Windows.UI.Xaml.Controls.Primitives; 
using Windows.UI.Xaml.Data; 
using Windows.UI.Xaml.Input; 
using Windows.UI.Xaml.Media; 
using Windows.UI.Xaml.Navigation; 
using System.Net; 
using Windows.Web.Http; 
namespace UniversalCA 
{ 

    public sealed partial class MainPage : Page 
    { 
     public MainPage() 
     { 
      this.InitializeComponent(); 
      Send();    

     } 

     public string Send() 
     { 
      HttpClient httpClient = new HttpClient(); 
      Uri requestUri = new Uri("http://restapic.azurewebsites.net/WebForm1.aspx?func=dd&hodn=WW"); 
      HttpResponseMessage httpResponse = new HttpResponseMessage(); 
      string httpResponseBody = ""; 
      try 
      { 
       httpResponseBody = await httpClient.GetStringAsync(requestUri); 
      } 
      catch (Exception ex) 
      { 
       httpResponseBody = "Error: " + ex.HResult.ToString("X") + " Message: " + ex.Message; 
      } 
      string tt = httpResponseBody.Split('>')[1].Split('<')[0]; 
      return httpResponseBody; 

     } 
    } 
} 
+0

他の人のために読みやすくするためにコードを書式化してください –

+1

なぜこの行を持っていますか? 'HttpResponseMessage httpResponse = new HttpResponseMessage();'?あなたはそれで何もしていないようです。 – user2657943

答えて

1

問題はないasync関数内awaitキーワードを使用することができないということです。 Send関数の宣言には、asyncというキーワードがありません。 asyncキーワードを追加すると、ちょうど@Ruben Vardanyansの答えに追加するには、問題に

public async Task<string> Send() 
+0

それは決してコンパイルされません、非同期メソッドは 'void'、' Task'または 'Task ' –

+0

を返さなければなりません申し訳ありません、答えを編集しました –

0

を解決します。単に

: )(あなたの送信にWait()キーワードを追加using System.Threading.Tasks;

を追加します。

public MainPage() 
    { 
     this.InitializeComponent(); 
     Send().Wait();    

    } 

を呼び出し、最終的にあなたの送信に()メソッド async Task<T>

public async Task<string> Send() 

を追加し、コンストラクタ内の非同期メソッドを呼び出すため、この答えをチェックしてみてください。 Call asynchronous method in constructor?

await Send();を使用してメソッドを呼び出すと、コンパイルエラーが発生します。

関連する問題