Итак, вы думаете, что было бы легко найти прямой пример информации POST для ASIFormDataRequest, но я не нашел 1: 1 в этих форматах. Вот запрос POST я хочу отправить:многостраничный запрос POST непосредственно в ASIFormDataRequest
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--
EDIT:
Оказывается, мои проблемы были больше с сервера, получающего данные. Но это то, с чем я закончил!
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];
Я также добавил следующую строку в buildMultipartFormDataPostBody ASIFormDataRequest, где Content-Disposition и Content-Type устанавливаются:
[self appendPostString:[NSString stringWithFormat:@"Content-Length: %lu\r\n\r\n", [data length]]];`
я не уверен, если есть более простой способ, чтобы добавить эту строку непосредственно из просьба, но из того, что я пробовал, казалось, это работала.
Спасибо за ваш ответ. Что вы сказали, имеет смысл оставить Content-Length и Content-Type, потому что они заполнены ASIFormDataRequest. Тем не менее, я не могу проверить содержимое тела, и это похоже на то, где моя ошибка все еще происходит. Есть ли способ проверить этот контент? Я попытался использовать setData, addData, setFile и addFile вместо строки 'setData' выше. – Katie
Вы можете отправить 'buildPostBody' в запрос, затем прочитать свойство' postBody'. –
Я все еще, кажется, получаю (null) для postBody, когда я это делаю. Однако, если я печатаю 'fileData' в конце' addData' (который вызывается 'setData'), содержимое включает contentType, мои данные, имя файла и ключ. – Katie