尝试将崩溃上传到hockeyapp时遇到404错误

时间:2017-05-10 09:58:01

标签: c# xamarin portable-class-library hockeyapp

我尝试使用public API手动将崩溃上传到HockeyApp。当使用Postman调用api链接并上传crash.log文件时它工作正常,但当我尝试从C#代码执行相同操作时,我得到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);
}

我正在使用WireShark来分析Postman发送的请求,并试图让我看起来完全一样。我看到的唯一区别是来自C#代码的请求在附件的Content-Disposition中具有filename *字段,而Postman中的请求没有:

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

值得一提的是,代码是在Xamarin项目的可移植库中编写的。

1 个答案:

答案 0 :(得分:1)

关注@LukasSpieß消化后,我问了question关于HockeyApp的支持。显然他们不处理边界标题中的引号。我错过了比较邮递员的要求和我的一件事。

以下是解决方案:

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

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