1
그래서 ASIFormDataRequest에 대한 POST 정보의 직접적인 예제를 쉽게 찾을 수 있다고 생각하지만이 형식으로 1 : 1을 찾지 못했습니다. 여기에 내가 보낼 POST 요청의 :ASIFormDataRequest에서 직접 multipart 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--
편집 :
내 문제는 데이터를 수신하는 서버와 더 있었다 밝혀졌습니다. 그러나 이것은 내가 결국 함께했던 것이다!
[self appendPostString:[NSString stringWithFormat:@"Content-Length: %lu\r\n\r\n", [data length]]];`
내가 직접 그 줄을 추가하는 쉬운 방법이 있는지 확실하지 않습니다 :
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-Length와 Content-Type은 ASIFormDataRequest에 의해 채워지므로 생략하는 것이 좋습니다. 그러나, 나는 신체의 내용을 검사 할 수 없다. 그리고 이것은 나의 오류가 여전히 발생하고있는 곳인 것처럼 보인다. 이 콘텐츠를 확인할 수있는 방법이 있습니까? 위의'setData' 라인 대신에 setData, addData, setFile, addFile을 사용해 보았습니다. – Katie
'buildPostBody'를 요청에 보내고'postBody' 속성을 읽을 수 있습니다. –
나는 postBody를 위해 (null)을 얻는 것처럼 보입니다. 그러나,'setData'에 의해 호출되는'addData'의 끝에'fileData'를 출력하면 내용은 contentType, my data, 파일 이름과 키를 포함합니다. – Katie