【发布时间】:2013-12-05 07:13:47
【问题描述】:
首先,感谢您阅读这个问题。
我正在开发使用 JSON 网络服务的应用程序。在应用程序中,我需要使用带有一些参数的图像(配置文件图像)调用 web 服务。 我的 JSON 请求应与以下相同...
{
"adduser": {
"firstname": "testFirstName",
"lastname": "testLastName",
"email": "test@test.com",
"projectids" : "1"
}
}
还有其他变量profileimage 用于上传图片。
我已经写了以下代码。
NSDictionary *dictParameter = @{@"adduser": @{@"firstname": firstName, @"lastname":lastName,@"email":email, @"projectids":@"1"}};
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
AFHTTPRequestOperation *op = [manager POST:strURL parameters:dictParameter constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
} success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"Success: %@ ***** %@", operation.responseString, responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@ ***** %@", operation.responseString, error);
}];
[op start];
以上代码记录以下错误。
Error: <br />
<b>Notice</b>: Undefined index: json in <b>/opt/lampp/htdocs/testproject/app/webroot/webservices/include.php</b> on line <b>15</b><br />
{"status":"failure","message":"Your Request is Empty"} ***** Error Domain=NSCocoaErrorDomain Code=3840 "The operation couldn’t be completed. (Cocoa error 3840.)" (JSON text did not start with array or object and option to allow fragments not set.) UserInfo=0x8abe490 {NSDebugDescription=JSON text did not start with array or object and option to allow fragments not set.}
如果我使用以下代码,它就可以正常工作。但我无法上传图片。
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager POST:strURL parameters:dictParameter success:^(AFHTTPRequestOperation *operation, id responseObject) {
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
}];
谢谢
【问题讨论】:
-
它不会被优化,因为它会调用你的服务器2次,但临时的解决办法是用你当前的代码返回用户头像的url地址,然后使用
UIImageView+AFNetworking下载图片 -
你认为 AFN 对参数做了什么?您的服务器期望什么? AFN在接收层次参数结构时究竟是如何组成部分的?
标签: ios json afnetworking-2