1

Box 2.0 APIObjective CクライアントからBoxフォルダにファイルをアップロードするためにしばらく試してみました。私はいくつかの投稿を読みました:

Curlドキュメントに記載されているように、 を正常に使用しようとしましたが、 NSMutableUrlRequest. これは私のコードです:

NSURL *URL = [NSURL URLWithString:@"https://api.box.com/2.0/files/content"];
    urlRequest = [[NSMutableURLRequest alloc]
                  initWithURL:URL cachePolicy:NSURLRequestReloadIgnoringCacheData
                  timeoutInterval:30];
    [urlRequest setHTTPMethod:@"POST"];
    AppDelegate *appDelegate = [AppDelegate sharedDelegate];
    NSString *p = [NSString stringWithFormat:@"BoxAuth api_key=%@&auth_token=%@",API_KEY,appDelegate.boxAuthToken];
    [urlRequest setValue:p forHTTPHeaderField:@"Authorization"];
    [urlRequest setValue:@"multipart/form-data, boundary=AaB03x" forHTTPHeaderField:@"Content-Type"];

    NSString *postBody = @"--AaB03x"
            @"content-disposition: form-data; name=\"filename\"; filename=\"test.txt\";"
            @"folder_id=466838434"
            @"Content-type: text/plain"
            @""
            @"testing box api 2.0"
            @""
            @"--AaB03x--";

    NSData *data = [postBody dataUsingEncoding:NSUTF8StringEncoding];
    [urlRequest setHTTPBody:data];
    [urlRequest setValue:[NSString stringWithFormat:@"%d",[data length]] forHTTPHeaderField:@"Content-Length"];
4

2 に答える 2

3

postBody の作成方法にはいくつかの問題があります。コード内の文字列リテラルの間に改行を入れると、単純にそれらが連結されます。実際には、HTTP 本文のさまざまな部分を区切るために、キャリッジ リターンとライン フィードが必要です。また、両方のフォーム要素を 1 つにまとめました。file と folder_id は、2 つの別個のフォーム要素です。次のようなことを試すことができます:

NSString *postBody = @"\r\n--AaB03x\r\n"
                      "Content-Disposition: form-data; filename=\"test.txt\"\r\n"
                      "Content-Type: text/plain\r\n\r\n"
                      "testing box api 2.0"
                      "\r\n--AaB03x\r\n"
                      "Content-Disposition: form-data; name=\"folder_id\";\r\n\r\n"
                      "0"
                      "\r\n--AaB03x--\r\n\r\n";

他のすべてが適切に設定されていれば、機能するはずだと思います。

于 2012-11-06T06:21:29.267 に答える
0

http://allseeing-i.com/ASIHTTPRequest/を使用

マルチパート フォームの処理がはるかに簡単になります。

于 2012-11-05T13:05:55.730 に答える