• 作为一个java后台开发者,要是看Android代码,也许还凑合,猛的一看ios的真是看懂接口已经写好了,Android端调试通过,但是ios的post请求数据接收的时候永远都是null,看了ios代码,他们将参数放在httpbody里了,...

    作为一个java后台开发者,要是看Android代码,也许还凑合,猛的一看ios的真是看不懂

    接口已经写好了,Android端调试通过,但是ios的post请求数据接收的时候永远都是null,看了ios代码,他们将参数放在httpbody里了,我寻思也许我request.getParameter有问题吗?但是不会呀,以前一直都是这么写的。。。

    询问之前ios同事,他告诉我,如果Android端能调通,基本没你什么事,你可以甩锅了。。。但是我责任心这么强是不是?这么有挑战性的问题,怎么能不解决呢

    最后找到一篇解决办法,要不怎么说csdn上,大神就是多呢

    调错之前,我问了ios开发人员,你是怎么序列化的,他不懂。。。但是最后还是在这里出问题了

    文章里写了“AFJSONRequestSerializer改成了AFHTTPRequestSerializer就OK了

    AFHTTPRequestSerializer *request = [AFHTTPRequestSerializer serializer];

    manager.requestSerializer = request;

    改完之后确实OK了,耶

    参考文章: 点击打开链接

    展开全文
  • 可能原因是:可能是由于 IOS 用的请求序列与Java接收请求的序列不同,所以导致POST提交数据后台收不到参数 解决办法:本人是把PSOT的请求方式换成GET的提交数据的方式就可以提交数据了。 传统POST提交方法: ....

    分享知识 传递快乐


    最近在工作上遇到一个奇葩问题,在Android和Windows平台上做请求时参数都可以正常传递和接收,但在IOS设备上后台死活接收不到值。

    可能原因是:可能是由于 IOS 用的请求序列与Java接收请求的序列不同,所以导致POST提交数据后台收不到参数

    解决办法:本人是把PSOT的请求方式换成GET的提交数据的方式就可以提交数据了。

     

    传统POST提交方法:

    //此方法不能在IOS设备上提交数据到后台
    $('#formId').attr('action', "url");
    $('#formId').submit();

    修改后提交方法:

    // 此方法可以在IOS设备上提交数据到后台
    $('#formId').attr('action', "url?"+$("#formId").serialize());
    $('#formId').submit();

     

     

     

     

     

    ——————————————————————

    由于写做时间匆忙,如不妥之处请海涵,留言指正。

    相互学习,共同进步

    展开全文
  • iOS 请求头第二次cookie中获取不到PHPSESSID的问题 最近在项目中让我遇到了一个很蛋疼的问题,我们的App中混合的有H5的界面,但是H5页面也需要对登录信息进行验证。于是我们就用了cookie来解决这个问题。 是不是...

    iOS 请求头第二次cookie中获取不到PHPSESSID的问题

    最近在项目中让我遇到了一个很蛋疼的问题,我们的App中混合的有H5的界面,但是H5页面也需要对登录信息进行验证。于是我们就用了cookie来解决这个问题。

    是不是感觉 So easy,废话不多说直接开整。
    首先我们在登录的时候拿到请求头里边的数据。

    NSHTTPURLResponse *response = (NSHTTPURLResponse *)task.response;
    NSString *cookie = response.allHeaderFields[@"Set-Cookie"];

    这个就是我们要获取的数据

    在这里我们很清楚的可以看到首次登录的时候我们是可以拿到服务端返回的PHPSESSID。这样我们就可以把信息存储一下,然后在调用网页的时候把cookie写入了。

    然鹅问题就是这么不声不响的来了。我在退出登录再次请求登录之后神奇的事情出现了。网页上要我登录。

    这里写图片描述

    什么情况是我的cookie失效了吗?懵逼的我赶快去看了下登录请求头中的数据。
    这里写图片描述

    这个时候我就去找后台大兄弟对质去了,但是他那边的日志报告显示我不光PHPESEEID传了,而且其他的东西也乱了。
    后来周折几番才发现犯了个低级错误,在退出登录的时候,仅仅清除了自己本地保存的内容,并没有清除cookie。退出登录意味着清除本地的用户信息,但是此时服务器并不知晓(session 未过期),再次访问的时候还有可能带着cookie里边的信息访问,造成登录用户所访问的假象,所以必须清除cookie
    在退出登录的时候加上这段代码

    NSURL *url = [NSURL URLWithString:@"你的服务器地址"];
    if (url) {
        NSArray *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookiesForURL:url];
        for (int i = 0; i < [cookies count]; i++) {
            NSHTTPCookie *cookie = (NSHTTPCookie *)[cookies objectAtIndex:i];
        }
    }

    之后再次登录PHPSESSID又出现了,问题解决。

    展开全文
  • iOS请求数据AFNetworking

    2015-12-25 15:33:04
    众所周知,苹果搞的一套框架NSContention发送请求与接收请求的方式十分繁琐。操作起来很方便。不仅要做区分各种请求设置各种不同的参数,而且还要经常在多线程里操作,同时还要对请求与返回的数据做各种序列化的...

    众所周知,苹果搞的一套框架NSContention发送请求与接收请求的方式十分繁琐。操作起来很不方便。不仅要做区分各种请求设置各种不同的参数,而且还要经常在多线程里操作,同时还要对请求与返回的数据做各种序列化的操作,同时还要考虑请求数据的安全等一堆问题。


    一、早前的几个网络框架
    1、ASI框架HTTP终结者.很牛, 但是有BUG, 已经停止更新.
    2、MKNetworkKit (印度人写的).
    3、AFN一直还在更新.

    AFNetworking的出现:MAC/iOS设计的一套网络框架.(为了简化网络操作)

    *AFN专注与网络数据传输,以及网络中多线程的处理.

    二、AFNetworking的使用

    1、AFN特性 :
    *登录传参数时,传递字典即可.(键名为参数名,键值为参数值).
    *自动到子线程中执行,执行完后返回主线程.
    *返回的结果自动序列化NSDictionary.

    2、使用AFN注意 :
    *AFHTTPRequestOperationManager封装了通过HTTP协议与Web应用程序进行通讯的常用方法.(这个实例化的时候不是单例, 因为没有shared)
    *包括创建请求/响应序列化/网络监控/数据安全.
    *方法等都是AF开头的.

    3、AFN能做的 (网络中的都涵盖了):
    *GET/POST/PUT/DELETE/HEAD请求.
    *JSON数据解析/Plist数据解析.(不支持XML数据解析)
    *POSTJSON.
    *上传/下载.

    4、使用步骤 : (可参考说明文档)
    1.首先需要实例化一个请求管理器AFHTTPRequestOperationManager.
    2.设置请求的数据格式:默认是二进制.(不是可改)
    *AFHTTPRequestSerializer(二进制)
    *AFJSONRequestSerializer(JSON)
    *AFPropertyListRequestSerializer(Plist)
    3.设置响应的数据格式:默认是JSON.(不是可改)
    *AFHTTPResponseSerializer(二进制)
    *AFJSONResponseSerializer(JSON)
    *AFPropertyListResponseSerializer(Plist)
    *AFXMLParserResponseSerializer(XML)
    *AFImageResponseSerializer(Image)
    *AFCompoundResponseSerializer(组合的)
    4.如果响应者的MIMEType不正确,就要修改acceptableContentTypes.
    5.调用方法,发送响应的请求(GET/POST...).

    关于修改AFN源码:通常序列化时做对text/plan等的支持时,可以一劳永逸的修改源代码,在acceptableContentTypes中修改即可。

    AFN进行GET、POST登录:

    [objc] view plaincopy
    1. #pragma mark - get/post登录  
    2. - (void)getLogin {  
    3.     //1.管理器  
    4.     AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];  
    5.   
    6.     //2.设置登录参数  
    7.     NSDictionary *dict = @{ @"username":@"xn"@"password":@"123" };  
    8.   
    9.     //3.请求  
    10.     [manager GET:@"http://localhost/login.php" parameters:dict success: ^(AFHTTPRequestOperation *operation, id responseObject) {  
    11.         NSLog(@"GET --> %@, %@", responseObject, [NSThread currentThread]); //自动返回主线程  
    12.     } failure: ^(AFHTTPRequestOperation *operation, NSError *error) {  
    13.         NSLog(@"%@", error);  
    14.     }];  
    15. }  
    16.   
    17. /** 
    18.  *  和上面的GET用法完全一样, 只有一个POST参数不一样 
    19.  */  
    20. - (void)postLogin {  
    21.     //1.管理器  
    22.     AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];  
    23.   
    24.     //2.设置登录参数  
    25.     NSDictionary *dict = @{ @"username":@"xn"@"password":@"123" };  
    26.   
    27.     //3.请求  
    28.     [manager POST:@"http://localhost/login.php" parameters:dict success: ^(AFHTTPRequestOperation *operation, id responseObject) {  
    29.         NSLog(@"POST --> %@, %@", responseObject, [NSThread currentThread]); //自动返回主线程  
    30.     } failure: ^(AFHTTPRequestOperation *operation, NSError *error) {  
    31.         NSLog(@"%@", error);  
    32.     }];  
    33. }  

    AFN进行网络数据解析,获取Plist,JSON,XMLAFN不支持自动解析XML,有专门的框架去做,如SAX,PULL,KissXML等)

    [objc] view plaincopy
    1. #pragma mark - get 数据解析  
    2. - (void)getJSON {  
    3.     //1.请求管理器  
    4.     AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];  
    5.   
    6.     //2.发起请求  
    7.     [manager GET:@"http://localhost/videos.json" parameters:nil success: ^(AFHTTPRequestOperation *operation, id responseObject) {  
    8.         NSLog(@"%@", responseObject);  
    9.     } failure: ^(AFHTTPRequestOperation *operation, NSError *error) {  
    10.         NSLog(@"%@", error);  
    11.     }];  
    12. }  
    13.   
    14. /** 
    15.  *  不支持XML数据解析 
    16.  */  
    17. - (void)getXML {  
    18.     //1.管理器  
    19.     AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];  
    20.   
    21.     //2.设置返回数据类型  
    22.     manager.responseSerializer = [AFXMLParserResponseSerializer serializer]; //先实例化一下  
    23.   
    24.     //3.发起请求  
    25.     [manager GET:@"http://localhost/videos.xml" parameters:nil success: ^(AFHTTPRequestOperation *operation, id responseObject) {  
    26.         NSLog(@"%@", responseObject);  
    27.     } failure: ^(AFHTTPRequestOperation *operation, NSError *error) {  
    28.         NSLog(@"%@", error);  
    29.     }];  
    30. }  
    31.   
    32. - (void)getPlist {  
    33.     //1.管理器  
    34.     AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];  
    35.   
    36.     //2.设置response类型  
    37.     manager.responseSerializer = [AFPropertyListResponseSerializer serializer]; //是Response, 别写成request了. 修改为plist类型.  
    38.     manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/plain"]; //这个可以直接往框架里面修改.  
    39.   
    40.     //3.请求  
    41.     [manager GET:@"http://localhost/videos.plist" parameters:nil success: ^(AFHTTPRequestOperation *operation, id responseObject) {  
    42.         NSLog(@"%@", responseObject);  
    43.     } failure: ^(AFHTTPRequestOperation *operation, NSError *error) {  
    44.         NSLog(@"%@", error);  
    45.     }];  
    46. }  

    用AFN来POST JSON数据,上传、下载等。(上传、下载主页说明上有https://github.com/AFNetworking/AFNetworking

    [objc] view plaincopy
    1. #pragma mark - post json数据与上传文件等  
    2. - (void)postJSON {  
    3.     //1.管理器  
    4.     AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];  
    5.   
    6.     //2.设定类型. (这里要设置request-response的类型)  
    7.     manager.requestSerializer = [AFJSONRequestSerializer serializer];  
    8.     manager.responseSerializer = [AFHTTPResponseSerializer serializer]; //这个决定了下面responseObject返回的类型  
    9. //    manager.responseSerializer = [AFJSONResponseSerializer serializer];  
    10. //  manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/plain"];  
    11.       
    12.     //2.设置登录参数  
    13.     NSDictionary *dict = @{ @"username":@"xn"@"password":@"123" };  
    14.   
    15.     //3.发送请求  
    16.     [manager POST:@"http://localhost/postjson.php" parameters:dict success: ^(AFHTTPRequestOperation *operation, id responseObject) {  
    17. //      NSLog(@"postjson--> %@", responseObject);  //这样显示JSON的话需要设置text/plain  
    18.         NSString *result = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];  
    19.         NSLog(@"%@",result);  
    20.     } failure: ^(AFHTTPRequestOperation *operation, NSError *error) {  
    21.         NSLog(@"%@", error);  
    22.     }];  
    23. }  

    转载请注明出处:http://blog.csdn.net/xn4545945  

    展开全文
  • 这是php接收移动客户端图片的接口,并将图片保存在服务器端本地,iOS开发代码稍后上传,希望对大家有帮助,并附带了图片加水印的代码,但是本代码没有用到,还有html调用接口上传图片的form表单。
  • 本内容用于完成一个小功能,iOS客户端发送名字字符,服务器接收这个名字,然后在iOS客户端异步通信把服务器返回的内容显示出来。首先介绍几个知识点: 使用GET网络通信 PHP中何时使用 GET? 通过 GET 方法从...

    
    
    本内容用于完成一个小功能,iOS客户端发送名字字符,服务器接收这个名字,然后在iOS客户端异步通信把服务器返回的内容显示出来。首先介绍几个知识点:

    使用GET网络通信

    PHP中何时使用 GET?

    通过 GET 方法从表单发送的信息对任何人都是可见的(所有变量名和值都显示在 URL 中)。GET 对所发送信息的数量也有限制。限制在大于 2000 个字符。不过,由于变量显示在 URL 中,把页面添加到书签中也更为方便。

    GET 可用于发送非敏感的数据。

    PHP服务器端的代码

    <?php
    $result= $_GET["name"];
    $arr = array(
        'name'=>"returned name is".$result,
    );
    $json = json_encode($arr);
    
    echo $json;
    功能十分简单,接收客户端发送的“name”返回json格式的数组;

    服务器端的代码 

        NSString *text = [NSString stringWithFormat:@"http://localhost:63342/test/welcome_get.php?<span style="color:#ff0000;">name=%@",self.nameTextField.text</span>];
        NSURL *url = [NSURL URLWithString:text];
        NSLog(@"%@",url);
        NSURLRequest *request = [NSURLRequest requestWithURL:url];
        [NSURLConnection sendAsynchronousRequest:request queue:<span style="color:#ff0000;">[NSOperationQueue mainQueue]</span>   completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
            NSLog(@"%@",response);
                          if (data) {
                              dispatch_async(dispatch_get_main_queue(), ^{
                                  
                                  NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
                                  
                                  NSString *text = json[@"name"];
                                  
                                  self.textView.text = text;
                              });
                          }
                      }];
    
    将UI里的nameTextField的文字发给前面的服务器,然后解析jsondata,并在textView中显示键值为name的返回值;需要注意的是由于此处传输的信息量很小我是用了mainQueue,这容易阻塞进程,不过此处可以。
    最后结果如下:


    使用POST实现网络通信

    何时使用 POST?

    通过 POST 方法从表单发送的信息对其他人是不可见的(所有名称/值会被嵌入 HTTP 请求的主体中),并且对所发送信息的数量也无限制

    此外 POST 支持高阶功能,比如在向服务器上传文件时进行 multi-part 二进制输入。

    不过,由于变量未显示在 URL 中,也就无法将页面添加到书签。

    提示:开发者偏爱 POST 来发送表单数据。


    PHP代码改为POST:
    <?php
    $result= $_POST["name"];
    $arr = array(
        'name'=>"returned name is   ".$result,
    );
    $json = json_encode($arr);
    
    echo $json;

    OC代码改为:

        NSMutableURLRequest *request = [<span style="color:#ff6666;">NSMutableURLRequest</span> requestWithURL:[NSURL URLWithString:@"http://localhost:63342/test/welcome_get.php"]];
        request.HTTPMethod = @"POST";
        request.HTTPBody = [[NSString stringWithFormat:@"name=%@",self.nameTextField.text] dataUsingEncoding:NSUTF8StringEncoding ];
        [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
            if (data) {
                
                NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
                NSLog(@"%@",json);
                NSString *text = json[@"name"];
    
    此处使用httpmethod和httpbody来进行设置,并使用UTF-8编码。
    运行结果是一样的。







    展开全文
  • 1. 将图片转换为Base64编码,...缺点:能上传较大的图片 // iOS(Swift)func upload(image: UIImage, url: String) { let imageData = UIImageJPEGRepresentation(image 1. 将图片转换为Base64编码,POST
  • 因为项目是一个app,接口方面接收IOS传给我的数组数据时总是报错不对,最后终于发现原因,以下是解决办法希望可以给大家带来一些帮助。 ...ios不到数组 最后我把他传过来的数据写入文件
  • iOS上传图像服务器,以及服务器PHP接收的几种方法 1. 将图片转换为Base64编码,POST上传。PHP将Base64解码为二进制,再写出文件。缺点:能上传较大的图片 // iOS(Swift) func upload(image: UIImage, url: ...
  • 本来可以早早睡觉了,突然发现PHP请求回来的JSON格式居然无法解析出正确的数据。 解析代码 request.responseEncoding = NSUTF8StringEncoding; NSString *responseString = [request responseString]; 用...
  • 使用Xcode7及以上版本,打开以前的工程,网络请求不到数据,原因是:  从iOS9开始引入了新特性App Transport Security (ATS),要求App内访问的网络必须使用HTTPS协议,但是现在很多项目使用的是HTTP协议,那么如何...
  • 请求正文,也称请求请求行如果是GET /Example/ HTTP/1.1 GET :指的是请求方式。 /Example:指的是请求地址,也就是URL。 HTTP/1.1 :指的是协议及版本号。 HTTP协议中的响应的内容格式 响应行 响应头 空行 响应...
  • 一般服务器上传数据一般都是用POST请求,这样通过AFNetworking的POST请求稳稳的,但是有一天遇到一个问题,服务器上传数据用的是PUT请求,发现用AFNetworking并是那么好用,今天就来讲一下如何通过PUT请求上传数据...
  • iOS 原生网络请求

    2017-11-15 16:36:36
    用多了ASIHttpRequest与AFNetWorking第三方网络框架难免对苹果底层的网络请求陌生,了解下苹果网络访问相关知识 一、URL Session的基本概念 1.三种工作模式: 1)默认会话模式(default):工作模式类似于原来的...
  • 2019独角兽企业重金招聘Python工程师标准>>> ...
  • 原因一:后台的原因 测试方法:http://www.atool.org/httptest.php 接口在线测试工具,在这个网站进行POST请求验证,如果是...你自己给AF设置了请求头text/mxl格式,然而AF默认的请求头并没有这个,所以你需要自己去AF
  • 于是到ios 的开发者平台 大致看了下原来: 在ios微信浏览器中,jQuery.post方法访问本地地址没有返回,而且也能做调试. 原因:ios里面的post请求,要求完整的post的请求头和json响应头,所以能直接post访问...
  • iOS-原生网络请求

    2016-02-26 11:16:25
    用多了AFN难免对苹果底层的网络请求陌生了许多,编程所谓一天敲就手生,尝试几种原生网络请求方法,和大家共享…普及: URL Session的基本概念1.三种工作模式:默认会话模式(default):工作模式类似于原来的...
  • ios http请求

    2018-06-16 00:49:18
    http://www.cocoachina.com/ios/20160601/16544.html1、GET和POST请求// 1.创建一个网络路径 NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"...
1 2 3 4 5 ... 20
收藏数 14,639
精华内容 5,855