以下是我用于以JSON格式将信息发布到服务器的代码。

    NSData *jsonData = [dict dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];

    NSString *jsonLength = [NSString stringWithFormat:@"%d",[jsonData length]];
    //Initiating the request
    urlRequest = [[NSMutableURLRequest alloc] init];
    [urlRequest setURL:url];
    [urlRequest setHTTPMethod:@"POST"];
    [urlRequest setValue:jsonLength forHTTPHeaderField:@"Content-Length"];
    [urlRequest setValue:@"application/json" forHTTPHeaderField:@"Accept"];
    //[urlRequest setValue:@"applcation/x-www-form-urlencoded;" forHTTPHeaderField:@"Content-Type"];
    [urlRequest setValue:@"applcation/json" forHTTPHeaderField:@"Content-Type"];
    [urlRequest setHTTPBody:jsonData];


以下是数据发布部分。

    NSString *urlStg = nil;
    NSString *dict = [NSString stringWithFormat:@"{\"keyword\":\"%@\",\"email\":\"%@\",\"password\":\"%@\"}",@"login",@"xx@aaa.com",@"2221"];

    //Parsing JSON data

    _LZjsonfetcher = [[JSONFetcher alloc] init];

    [_LZjsonfetcher setDelegate:self];

    [_LZjsonfetcher postDataParsed:dict url:urlStg delegate:nil key:nil];


我已经成功连接到服务器并获得JSON返回。
但是,问题是我对如何使用JSON将图像提交到服务器一无所知。我试图找到一个没有成功的样本。 JSON不支持图片上传吗?我是否需要寻找另一种将图像上传到服务器的方法?感谢您的帮助。

最佳答案

尽管您可以使用此处的建议来做到这一点,但我认为值得研究AFNetworking框架,该框架使我认为整个联网过程更加轻松。
使用此框架,以下是发送带有图像的JSON的方法:

AFHTTPRequestOperationManager * manager = [[AFHTTPRequestOperationManager alloc] init];
NSData * imageData = UIImageJPEGRepresentation(myImage, 1.0);
NSDictionary * jsonParameters = @{@"key":@"value"};

[manager POST:@"http://myURL.com" parameters:jsonParameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
    [formData appendPartWithFileData:imageData name:@"attachment" fileName:@"myImage.jpg" mimeType:@"image/jpeg"];
  } success:^(AFHTTPRequestOperation *operation, id responseObject) {
        NSLog(@"Success!");
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        NSLog(@"Failure!");
    }];


该框架非常灵活,您可以使用它做更多的事情-我强烈推荐它。

关于ios - 如何将包含图像的JSON对象发布到服务器?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21568935/

10-12 07:20
查看更多