1
因此,您认为可以很容易地找到ASIFormDataRequest的POST信息的直接示例,但我还没有在这些格式中找到1:1。这里是POST请求我想送:ASIFormDataRequest中的多部分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];
我还增加了以下行ASIFormDataRequest的buildMultipartFormDataPostBody其中内容处置和Content-Type设置:
[self appendPostString:[NSString stringWithFormat:@"Content-Length: %lu\r\n\r\n", [data length]]];`
我不知道是否有直接从补充该行的简单方法请求,但是我尝试过的东西,这似乎是一个工作。
感谢您的回复。您所说的内容长度和内容类型是有意义的,因为这些内容由ASIFormDataRequest填充。但是,我无法检查身体的内容,这似乎是我的错误仍在发生的地方。有没有办法检查这些内容?我试过用setData,addData,setFile和addFile来代替上面的'setData'这一行。 – Katie
您可以发送'buildPostBody'到请求,然后阅读'postBody'属性。 –
当我这样做的时候,我似乎仍然得到(null)postBody。但是,如果我在'addData'(由'setData'调用)的末尾输出'fileData',则内容包括contentType,我的数据,文件名和密钥。 – Katie