如何在 iOS 中使用 AFNetworking 将数据发送到 php 服务器
Posted
技术标签:
【中文标题】如何在 iOS 中使用 AFNetworking 将数据发送到 php 服务器【英文标题】:How to send data to php server using AFNetworking in iOS 【发布时间】:2015-03-19 09:07:37 【问题描述】:我有一些数据,例如(图像和文本)。我想通过我的目标 c 编码使用 AFNetworking 将此数据发送到 php 服务器。
我的回复是这样的:
我必须将指定和关于字段的文本发送到 PHP 服务器。
我的代码如下:
- (void) upload
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.requestSerializer = [AFJSONRequestSerializer serializer];
NSDictionary *params = @ @"about" :self.aboutField.text, @"designation" :self.desinationField.text ;
[manager POST:@UPDATE_PROFILE_URL parameters:params
success:^(AFHTTPRequestOperation *operation, id responseObject)
NSLog(@"JSON: %@", responseObject);
failure:
^(AFHTTPRequestOperation *operation, NSError *error)
NSLog(@"Error: %@", error);
];
我正在将“text/html”添加到acceptableContentTypes
设置在AFURLResponseSerialization
类中。
当我运行我的应用程序时出现以下错误:
Error: 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=0x7d405870 NSDebugDescription=JSON text did not start with array or object and option to allow fragments not set.
请帮帮我。
【问题讨论】:
您将请求序列化程序设置为 JSON ,但我认为您谈论的是 responseSerializer。 【参考方案1】:http://www.raywenderlich.com/13511/how-to-create-an-app-like-instagram-with-a-web-service-backend-part-12 教程介绍了使用afnetworking和php将图像上传到服务器
【讨论】:
【参考方案2】:我终于可以使用AFNetworking
在服务器上上传图片和文本了。
添加这2个类AFNetworking & UIKit+AFNetworking
进口:
#import "AFHTTPRequestOperation.h"
#import "AFHTTPRequestOperationManager.h"
这是我的代码:
- (void)uploadProfile_Details
AFHTTPRequestOperationManager *manager = [[AFHTTPRequestOperationManager alloc] initWithBaseURL:[NSURL URLWithString:@UPDATE_PROFILE_URL]];
// Retrieve Image from Document directory------
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *getImagePath = [documentsDirectory stringByAppendingPathComponent:@"profileImg.png"];
UIImage *img = [UIImage imageWithContentsOfFile:getImagePath];
NSData *imageData = UIImageJPEGRepresentation(img, 0.5);
// Create dictionary for sending text to server ------
NSDictionary *parameters = [NSDictionary dictionaryWithObjectsAndKeys:self.desinationField.text,@"designation",self.teamField.text,@"team",self.aboutField.text,@"about",self.skillLbl.text,@"skills",self.interestField.text,@"interests", nil];
AFHTTPRequestOperation *operation = [manager POST:@UPDATE_PROFILE_URL parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData)
//do not put image inside parameters dictionary as I did, but append it!
[formData appendPartWithFileData:imageData name:@"image" fileName:@"myimage.jpg" mimeType:@"image/jpeg"];
success:^(AFHTTPRequestOperation *operation, id responseObject)
NSLog(@"Success: %@ ***** %@", operation.responseString, responseObject);
failure:^(AFHTTPRequestOperation *operation, NSError *error)
NSLog(@"Error: %@ ***** %@", operation.responseString, error);
];
[operation start];
【讨论】:
以上是关于如何在 iOS 中使用 AFNetworking 将数据发送到 php 服务器的主要内容,如果未能解决你的问题,请参考以下文章
如何在 iOS 中使用 AFNetworking 从 REST 接口定期轮询/拉取
如何使用 AFNetworking 在 iOS 目标 c 中发出此帖子请求
如何在 iOS Objective-C 中使用 AFNetworking 库下载 .json 文件?
如何在 iOS 中使用 AFNetworking 将数据发送到 php 服务器
如何允许用户在 iOS 中使用 AFNetworking 信任和固定自签名 SSL 证书
如何使用 AFNetworking 3.x 在 ios、objective-C 中使用来自 SOAP webservice 的数据