1

新しい Copy.com API の操作。OAuth1 で正常にサインインし、プロファイル データを要求しており、フォルダーを正常に作成できます。

https://www.copy.com/developer/documentation#api-calls/filesystemの API ドキュメントを参照しPOST、API にリクエストを作成して新しいファイルを作成するセクションに移動すると、ヘッダーの手順は次のようになります。私には少し奇妙です。ここを参照してください:

Content-Type:multipart/form-data; boundary=----WebKitFormBoundary5dcD4Bk7SevSsaMg

Content-Disposition: form-data; name="X-Api-Version"

1.0
------WebKitFormBoundary5dcD4Bk7SevSsaMg
Content-Disposition: form-data; name="file"; filename="animation.gif"
Content-Type: image/gif

<BASE64 ENCODED FILE STRUCTURE>
------WebKitFormBoundary5dcD4Bk7SevSsaMg--

ご覧のとおり、パラメータで区切られたContent-Typeとの複数のヘッダー フィールドがあります。NSMutableURLRequest を使用すると、以前の値を上書きするだけです。ヘッダーフィールドには次のものがあります。Content-Dispositionboundary-setValue:forHTTPHeaderField

 NSString *boundaryString = @"----WebKitFormBoundary5dcD4Bk7SevSsaMg";
NSString *disposition = @"Content-Disposition: form-data; name=\"ThankYou.mp3\" filename=\"ThankYou.mp3\"";
NSString *type = @"Content-Type: audio/mp3";
NSData *dispositionData = [disposition dataUsingEncoding:NSUTF8StringEncoding];
NSData *typeData = [type dataUsingEncoding:NSUTF8StringEncoding];
NSData *boundaryData = [boundaryString dataUsingEncoding:NSUTF8StringEncoding];
NSMutableData *songData = [NSMutableData data];
[songData appendData:boundaryData];
[songData appendData:dispositionData];
[songData appendData:typeData];
[songData appendData:mp3Data]; //initiated before. From my mainBundle.
[songData appendData:boundaryData];
[request setHTTPBody:songData];

[self.myAuth authorizeRequest:request];
[request setValue:@"1" forHTTPHeaderField:@"X-Api-Version"];
[request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[request setValue:@"multipart/form-data; boundary=----WebKitFormBoundary5dcD4Bk7SevSsaMg" forHTTPHeaderField:@"Content-Type"];
[request setValue:@"form-data; name=\"X-Api-Version\"=1.0" forHTTPHeaderField:@"Content-Disposition"];

ご覧のとおり、実際の本文データの前に境界、Content-Disposition、および Content-Type を追加し、最後に境界を追加することで、POST 要求の構造を複製しようとしました。

最後に、Copy.com に「ThankYou.mp3」というフォルダーが作成されるだけです。これは、空の本文データで POST 要求を行うと発生します。ボディデータが空ではないことを保証します:-)

誰か助けてくれませんか?

4

1 に答える 1

2

このクラスで使用されるコードは、動作することがテストされています: COCopyClient.m

ライブラリを使用する方が簡単かもしれません: copy-mac-ios-sdk

于 2013-08-31T13:48:05.793 に答える