2017-09-21 21 views
0

私はHttpClient.PutAsyncメソッドを正しく動作させることができません。私はGetAsyncメソッドをうまく動作させることができました。私も郵便配達でPUT呼び出しを成功させることができますpostman screenshotHttpClient PutAsyncの問題ハングするか、または404が返されました

これは404が見つからないときに使用しているコードです。

public static async Task<HttpResponseMessage> PutAsJsonAsync<Contact>(HttpClient client, Contact contact) 
{ 
client.DefaultRequestHeaders.Add("X-API-TOKEN","MyT0k3n"); 
var json = JsonConvert.SerializeObject(contact);  
var stringContent = new StringContent(json, Encoding.UTF8, "application/json"); 
return await client.PutAsync("https://survey.qualtrics.com/API/v3/mailinglists/ML_123456/contacts/MLRP_123456", stringContent); 

} 

Contactクラスには、 "解除" などの変数を持っています。

私も(https://gist.github.com/alexandrevicenzi/9216739)これを試してみましたが、私はタスクスレッドがハングしてタイムアウトするまで待ちとき:

public static Task<HttpResponseMessage> PutJsonAsync(HttpClient client, string requestUri, Type type, object value) 
{ 

    return client.PutAsync(requestUri, new ObjectContent(type, value, new JsonMediaTypeFormatter(), "application/json")); 
} 

を私は、正直に非同期に精通していないよ待つ、またはHttpClientを。私は過去にHttpWebRequestとWebRequestを使用しました。私は私の古い方法でPUTを試み、失敗しました。誰にでもアイデアはありますか?

+2

両方のリクエストをフィドラーで送信し、結果を表示します。私はあなたのリクエストが正しくフォーマットされていないと思うでしょう - > 404. – burnsi

+0

ありがとう@バーンシ!これはむしろ恥ずかしいです。私はhttpsのためのフィドラーを設定し、ここで尋ねる前に試してみました。私のリクエストURIに "/"がありませんでした。自然に404.私は構文に集中しすぎて、タイプミスを逃してしまった。私は助けていただきありがとうございます、あなたのコメントは正しいですし、私の問題を見つけるために私を導く。あなたが答えとして投稿するなら、私はそれを受け入れるでしょう。 – hackingchemist

答えて

2

ほとんどの場合、このようなタスクで404を受け取ると、リクエストURLが不正です。

ヒント:

両方の要求をキャプチャし、生のバージョンでそれらを比較することシオマネキ試してみてください。

Fiddler

+0

この回答は、フィドラーでHTTPSを設定する際に役立ちました。https://stackoverflow.com/questions/25440877/fiddler-root-certificate-location – hackingchemist

関連する問題