如何在 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 的数据