2017-05-10 6 views
1

public APIを使用してHockeyAppにクラッシュを手動でアップロードしようとしています。 Postmanを使用してapiリンクを呼び出し、crash.logファイルをアップロードするとうまくいきますが、C#コードから同じことをしようとすると404エラーが発生します。私はポストマンが送信され、要求を分析するためにWireSharkのを使用し、鉱山がまったく同じに見えるように試みたhockeyappにクラッシュをアップロードしようとしたときに404エラーが発生しました

string log = ""; //log content 
using (HttpClient client = new HttpClient()) 
{ 
    client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("*/*")); 

    var content = new MultipartFormDataContent(); 

    var stringContent = new StringContent(log); 
    stringContent.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("text/plain"); 

    content.Add(stringContent, "log", "crash.log"); 

    var response = await this.client.PostAsync("https://rink.hockeyapp.net/api/2/apps/[APP_ID]/crashes/upload", content); 
} 

は、ここに私のコードです。

Content-Disposition: form-data; name="log"; filename="crash.log"; filename*=utf-8''%22crash.log%22 

コードを携帯で書かれていることを言及する価値があるかもしれません。私が見る唯一の違いは、ポストマンから1にはないながら、C#コードからその要求が取り付けのためのContent-処分にファイル名*フィールドを持っていますXamarinプロジェクトのライブラリ

+0

念のため、URLは通常、 '[APP_ID]'右、適切なHockeyAppのApp IDに置き換えられましたか? :) –

+0

はい、もちろん;) – Brazol

+0

私はHockeyAppでサポートチケットをオープンすることを提案します。 –

答えて

1

@ LukasSpießsugestionに続いて、私はquestionにHockeyAppのサポートを依頼しました。どうやら彼らは境界ヘッダーの引用符を扱っていないようです。私がPostmanの要求と私の比較を見逃したこと。ここで

がソリューションです:

var contentTypeString = content.Headers.ContentType.ToString().Replace("\"", ""); 

content.Headers.Remove("Content-Type"); 
content.Headers.TryAddWithoutValidation("Content-Type", contentTypeString); 
+0

どこで動作しないのでこのコードを置く必要がありますか? – Motaz

関連する問題