2016-11-23 6 views
0

私は部分的にC#にTypeScriptアプリケーションを移植しています。アプリケーションは、Webサービス上で特定のREST呼び出しを実行する必要があります。 Webサービスは、C#で書かれている具体的な方法は、次のシグネチャを有する:HttpClient PUTパラメータを追加する正しい方法は? - C#へのTypeScript REST呼び出しの移植

public async Task<IHttpActionResult> RegisterDevice(DeviceRegistration deviceRegistration) 

元のアプリケーション(活字体)は次のようにREST呼び出しを行う:

this.$http.put(this.Configuration.registrationEndpointUrl, { 
    field1: value1, 
    field2: value2, 
    field3: value3 
}) 

私はどのように上のStackOverflowを検索しました電話をして、それを行う方法を説明する記事を見つけました。私はその後、C#のバージョンで次を作成しました:

var pairs = new List<KeyValuePair<string, string>>() { 
    new KeyValuePair<string, string>("field1", Settings.Value1), 
    new KeyValuePair<string, string>("field2", Settings.Value2), 
    new KeyValuePair<string, string>("field3", "value3") 
}; 
var content = new FormUrlEncodedContent(pairs); 
var response = await Client.PutAsync(Configuration.RegistrationUrl, content); 

しかし、これは空の応答を返します。私はFormUrlEncodedContentで何かが間違っていると思っていますか? C#でこの呼び出しを行う正しい方法は何ですか?

EDIT:クライアントの初期化コード:

private static async Task<HttpClient> CreateClient() { 
    await Authenticator.VerifyAuthentication(); 
    var client = new HttpClient(); 
    client.DefaultRequestHeaders.Accept.Clear(); 
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 
    client.DefaultRequestHeaders.Add("x-zumo-auth", Settings.OAuthToken); 
    client.DefaultRequestHeaders.Add("x-oauth-provider", Settings.OAuthProvider.Value.ToString()); 
    return client; 
} 
+0

を使用することができますか? – Vyrira

+0

@Vyrira BadRequest – EpicSam

答えて

1

代わりの方法

var response = await Client.PutAsync(Configuration.RegistrationUrl, content); 

を使用することができます応答のステータスコードは何この

var response = await Client.PutAsJsonAsync(Configuration.RegistrationUrl, content); 
+0

'PutAsJsonAsync'メソッドは私にとっては存在しません。私はそれを持っている必要があると信じている.NET Framework 4.5を使用していますか? – EpicSam

+0

クライアントのタイプはHttpClientですか? –

+0

はい、質問にクライアントの初期化コードを追加しました。 – EpicSam

関連する問題