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