1

したがって、ASIFormDataRequestへのPOST情報の直接的な例を見つけるのは簡単だと思いますが、これらの形式で1:1は見つかりませんでした。送信したいPOSTリクエストは次のとおりです。

POST /fileXfer HTTP/1.1
Content-Type: multipart/form-data; boundary=AaB03x
Content-Length: 200
AppID:myID
TransferID:abcd1234

-- AaB03x
Content-Disposition: form-data; name="data"; filename="xxx"
Content-Type: application/octet-stream
Content-Length: 100

... contents of file ...

--AaB03x--

編集:

私の問題は、サーバーがデータを受信することでした。しかし、これは私が最終的に得たものです!

NSURL *url = [NSURL URLWithString:@"http://IP:PORT/fileXfer"];
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
[request setPostFormat:ASIMultipartFormDataPostFormat];

//Sets headers of POST
[request addRequestHeader:@"X-Application-Id" value:@"myID"];
[request addRequestHeader:@"X-Transfer-Id" value:@"abcd1234"];

//Sets data
NSData *fileData = [NSData dataWithContentsOfFile:kEncryptedFilePath];
[request setData:fileData withFileName:@"xxx" andContentType:@"application/octet-stream" forKey:@"data"];

[request setDelegate:self];
[request startAsynchronous];

また、Content-DispositionとContent-Typeが設定されているASIFormDataRequestのbuildMultipartFormDataPostBodyに次の行を追加しました。

[self appendPostString:[NSString stringWithFormat:@"Content-Length: %lu\r\n\r\n", [data length]]];`

リクエストから直接その行を追加する簡単な方法があるかどうかはわかりませんが、私が試したものの中で、これはうまくいったようです。

4

1 に答える 1

0

エラーが発生する可能性がある HTTP 本文を手動で作成するのではなく、 が提供するメソッドを使用することをお勧めしますASIFormDataRequest

NSURL *url = [NSURL URLWithString:@"http://IP:PORT/fileXfer"];
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];

[request addRequestHeader:@"X-Application-Id" value:@"myID"];
[リクエスト addRequestHeader:@"X-Transfer-Id" 値:@"abcd1234"];

[request setData:[self fileData] withFileName:@"xxx" andContentType:@"application/octet-stream" forKey:@"data"];

[リクエスト setDelegate:self];
[リクエスト startAsynchronous];
于 2012-06-26T20:43:52.540 に答える