2013-08-08 5 views
1

Я пытаюсь загрузить файл с запросом POST на TestFlight Api. Я стараюсь делать это как простейшее, как это возможно, но я все еще получаю ошибку 500.Запрос POST для TestFlight Api с ошибкой 500

HttpWebRequest request = WebRequest 
    .Create('http://testflightapp.com/api/builds.json') as HttpWebRequest; 
request.KeepAlive = false; 
request.Headers.Add("api_token", "####"); 
request.Headers.Add("team_token", "####"); 
request.Headers.Add("notes", "notes"); 
request.ContentType = "multipart/form-data"; 
request.Method = WebRequestMethods.Http.Post; 
byte[] messageArray = File.ReadAllBytes(filePath); 
request.ContentLength = messageArray.Length; 
Stream requestStream = request.GetRequestStream(); 
requestStream.Write(messageArray, 0, messageArray.Length); 
requestStream.Close(); 

WebResponse response = request.GetResponse(); 
StreamReader responseReader = new StreamReader(response.GetResponseStream()); 
string result = responseReader.ReadToEnd(); 
responseReader.Close(); 
response.Close(); 
return result; 

Что я делаю не так?

+0

Пожалуйста, избегайте использования тегов в заголовке (я пытался отредактировать его в удобочитаемом заголовке) и «спасибо вам». Не стесняйтесь обсуждать [meta] (http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be-removed-from-posts). –

ответ

0

Это не так, как программно создать многослойную форму. Вы смешиваете заголовки и содержимое, не следуя правильным многочастным разделителям, даже не именовав детали, неправильно вычисляя длину содержимого и т. Д. См. c# multipart/form-data submit programmatically для получения справки в csharp.

Возможно, вы захотите использовать конструкции csharp более высокого уровня (like MultipartFormDataContent if you have .NET 4.5). В Java один заканчивается: https://github.com/jenkinsci/testflight-plugin/blob/master/src/main/java/testflight/TestflightUploader.java.

Если вы хотите сделать это самостоятельно, я настоятельно рекомендую вам, например, использовать завиток, чтобы сделать загрузку и wireharp, чтобы извлечь TCP-разговор и сравнить то, что curl делает то, что вы делаете.

1

1 Похоже Youre отсутствие заголовка с именем файла это также требуется

https://testflightapp.com/api/doc/#

2 ТипСодержимого

webRequest.ContentType = "application/json"; 

3 дополнительных настроек?

может быть, вы должны также установить request.UserAgent и/или request.AllowWriteStreamBuffering

request.UserAgent = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.121 Safari/535.2"; 

request.AllowWriteStreamBuffering = true; 
+0

Я добавил «request.Headers.Add (« файл »,« @ appName.ipa »); но тот же результат. –

+0

Ну, после вашего 3-шагового обновления, я переехал вперед, теперь я получаю ошибку 400, плохой запрос. –

Смежные вопросы