1

ビルドを自動化するためにTestFlightのアップロードAPIを試しています。ドキュメントは次のとおりです:https ://testflightapp.com/api/doc/

これは、私がテストして機能させた最小限のcurlコマンドラインリクエストです。

.\curl.exe http://testflightapp.com/api/builds.json 
  -F file=@MyFileName.ipa
  -F api_token='myapitoken' -F team_token='myteamtoken' 
  -F notes='curl test'

私はそれを次のようにC#に変換しようとしました:

var uploadRequest = WebRequest.Create("http://testflightapp.com/api/builds.json") as HttpWebRequest;
uploadRequest.Method = "POST";
uploadRequest.ContentType = "multipart/form-data";

var postParameters = string.Format("api_token={0}&team_token={1}&notes=autobuild&file=", TESTFLIGHT_API_TOKEN, TESTFLIGHT_TEAM_TOKEN);
var byteParameters = Encoding.UTF8.GetBytes(postParameters);

var ipaData = File.ReadAllBytes(IPA_PATH);

uploadRequest.ContentLength = byteParameters.Length + ipaData.Length;
var requestStream = uploadRequest.GetRequestStream();
requestStream.Write(byteParameters, 0, byteParameters.Length);
requestStream.Write(ipaData, 0, ipaData.Length);
requestStream.Close();

var uploadResponse = uploadRequest.GetResponse();

残念ながら、私はそれ以上の情報GetResponse()を取得しません。(500) Internal Server Error

postParametersのデータを'sでラップする必要があるかどうかはわかりませんが、両方の方法で試しました。また、自分のコンテンツタイプが正しいかどうかもわかりません。私も試しましapplication/x-www-form-urlencodedたが、効果はありませんでした。

どんな助けでも大歓迎です。

4

1 に答える 1

2

Adrian Iftodeのコメントのおかげで、RestSharpを見つけました。これにより、次のようなリクエストを実装できました。

var testflight = new RestClient("http://testflightapp.com");

var uploadRequest = new RestRequest("api/builds.json", Method.POST);

uploadRequest.AddParameter("api_token", TESTFLIGHT_API_TOKEN);
uploadRequest.AddParameter("team_token", TESTFLIGHT_TEAM_TOKEN);
uploadRequest.AddParameter("notes", "autobuild");

uploadRequest.AddFile("file", IPA_PATH);

var response = testflight.Execute(uploadRequest);
System.Diagnostics.Debug.Assert(response.StatusCode == HttpStatusCode.OK, 
            "Build not uploaded, testflight returned error " + response.StatusDescription);

UIアプリを作成している場合、RestSharpは非同期実行も実行できます。上記のリンクでドキュメントを確認してください!

于 2012-05-09T08:18:27.663 に答える