3

ここ数日間、Box でファイルのアップロードを機能させようとしてきました。何か間違ったことをしていることはわかっていますが、それが何であるかはわかりません。

できる限りコードを減らして、これだけにしました。

// Configure the request
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:[NSURL URLWithString:@"https://api.box.com/2.0/files/data"]];
[request setHTTPMethod:@"POST"];

[request setValue:boxAuthString forHTTPHeaderField:@"Authorization"];

// Setu up the request
NSString *boundary = [NSString stringWithString:@"--PLEASEHELPMEGETTHISWORKING"];
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@\r\n",boundary];
[request addValue:contentType forHTTPHeaderField: @"Content-Type"];

NSMutableData *body = [NSMutableData data];

// Add the info and data for the file.
[body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithString:@"Content-Disposition:form-data;name=\"filename\";filename=\"testfile.txt\"\r\n"]
                      dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithString:@"Content-Type:text/plain\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithString:@"Hello"] dataUsingEncoding:NSUTF8StringEncoding]];

// Add the info and data for the target folder. 
[body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithString:@"Content-Disposition:form-data;name=\"folder_id\"\r\n\r\n"]
                  dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithString:@"0"] dataUsingEncoding:NSASCIIStringEncoding]];  

// Close the body and set to the request
[body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n", boundary] dataUsingEncoding: NSUTF8StringEncoding]];
[request setHTTPBody:body];    

// now lets make the connection to the web
NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];

NSLog(@"%@", returnString);

しかし、私はまだ {"type":"error","status":404,"code":"not_found","help_url":"http://developers.box.com/docs/# を返しますエラー","メッセージ":"見つかりません","re​​quest_id":"10130600215xxxxxxxxxxx"}

POSTMANまたはcURLを使用すると、それを機能させることができるので、誰かが私を正しい方向に向けるのを手伝ってもらえますか?それは明らかに私のコードの問題です。「folder_id」と関係があると思われますが、実際の原因を診断することはできません.

4

1 に答える 1

4

修正しました。問題は私の「境界」構築コードにありました。私は得た:

NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@\r\n",boundary];

そして持っているべきだった:

NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary];

間違った終端 '\r\n' を見つけてください。しかたがない。これで約4時間無駄にしました。:-)

于 2012-07-19T19:37:02.633 に答える