【问题标题】:AFHttpSessionManager - Multipart POST causing org.codehaus.jackson.JsonParseExceptionAFHttpSessionManager - 导致 org.codehaus.jackson.JsonParseException 的多部分 POST
【发布时间】:2014-07-09 18:47:41
【问题描述】:

我正在尝试使用 AFNetworking 2 的 AFHTTPSessionManager 将 pdf 内容发布到我的网络服务。我将 AFHTTPSessionManager 子类化,并将请求和响应序列化程序设置为相应的 AFJsonXXXSerializer。但是,当我将表单数据作为多部分请求发布时,我得到了 JsonParseException。我很确定这是一个直接的用例,我可能会遗漏一些东西。请帮忙,提前谢谢!

[accessMgr postDataToURL:@"objects-d2" usingParams:nil fileData:imageData andDelegate:self];

调用下面的方法来POST

-(void) postDataToURL:(NSString *) urlString usingParams:(id)parameters fileData: (NSData          *)fileData andDelegate:(id<RemoteAccessDelegate>) remoteDelegate
{

//RESTSessionManager extends AFHTTPSessionMaanger
RESTSessionManager *manager = [self getManager:remoteDelegate];

[manager POST:urlString parameters: parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
    [formData appendPartWithFileData:fileData name:@"content" fileName:@"test.pdf" mimeType:@"application/pdf"];

请求带有以下标头和表单数据

POST /d2fs/repositories/ls67sp2/objects-d2 HTTP/1.1
Host: localhost:8080
Content-Type: multipart/form-data; boundary=Boundary+422AF86226B68040
Connection: keep-alive
Transfer-Encoding: Chunked
Accept: application/json
User-Agent: IIG Mobile/1.1 (iPad Simulator; iOS 7.1; Scale/2.00)
Accept-Language: en;q=1, fr;q=0.9, de;q=0.8, zh-Hans;q=0.7, zh-Hant;q=0.6, ja;q=0.5
Authorization: Basic bHNhZG1pbjpsc2FkbWlu
Accept-Encoding: gzip, deflate

--Boundary+422AF86226B68040
Content-Disposition: form-data; name="content"; filename="test.pdf"
Content-Type: application/pdf

%PDF-1.3
%ƒÂÚÂÎßÛ†–ƒ∆
<more file content>

我已验证尾随边界也已设置。从我的网络服务得到的响应是

{
    "status": 400,
    "code": "E_INPUT_ILLEGAL_ARGUMENTS",
    "message": "There are illegal arguments provided.",
    "details": "org.codehaus.jackson.JsonParseException: Unexpected character ('%' (code 37)): expected a valid value (number, String, array, object, 'true', 'false' or 'null')\n at [Source: org.apache.commons.fileupload.MultipartStream$ItemInputStream@22a5cdce; line: 1, column: 2];Unexpected character ('%' (code 37)): expected a valid value (number, String, array, object, 'true', 'false' or 'null')\n at [Source: org.apache.commons.fileupload.MultipartStream$ItemInputStream@22a5cdce; line: 1, column: 2]"
}

【问题讨论】:

    标签: jackson afnetworking multipartform-data afnetworking-2


    【解决方案1】:

    我今天能够解决这个问题。在附加文件数据之前,我必须附加一个 json 对象,该对象是关于该对象的元数据,并且上传起到了作用!谢谢。

    [formData appendPartWithFormData:data name:@"object"];
    [formData appendPartWithFileData:fileData name:@"content" fileName:@"test.pdf" mimeType:@"application/pdf"]; 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-04
      • 2014-12-05
      • 2014-08-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多