zoukankan      html  css  js  c++  java
  • ios 传递JSON串过去 前面多了个等号

    先说下我的问题

    后台让我这边把请求的参数弄成一个实体转化成 json 串放body里传给他,当然header也有设置,提前设置好了,

    但是后来了解 所谓的把实体转成json串的本质就是先把实体用runtime 转化为字典 或者数组 然后用

      NSData *jsonData = [NSJSONSerialization dataWithJSONObject:model options:NSJSONWritingPrettyPrinted error:nil];

        //

        NSString *jsonStr = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];

    上面两行代码解析转换,得到的确实好的json串。

    但是问题出现了,每次传递之前输出log json串是没问题的,但是到服务器那边,json串前多了个等号,

    =%3C7b0a2020%2022706173%2073776f72%206422203a%2020223132%2033343536%20222c0a20%2020227573%2065724e61%206d652220%203a202231%2033323431%2035383235%203233220a%207d%3E

    后台解析不了。

    后来查找AFN底层 找到原因了 

    AFURLRequestSerialization.m 508行  

    query = AFQueryStringFromParameters(parameters); 能清晰的输出 把我们的json 做了改变(为什么会变)。

    解决办法 

    AFHTTPSessionManager 267行方法 里加入

     [request setHTTPBody:parameters]; (不知道为什么会这样),

    但是到现在为止 还是没通数据 又把前面的json串改成json流 也就是删除   NSString *jsonStr = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];

    但是我用的是Ytknetwork 所以 我又改了

    YTKNetworkAgent.m 167 行sessionTaskForRequest 进入响应的post (根据需要可以是get),也就是457行 

    dataTaskWithHTTPMethod方法里加入

        [request setHTTPBody:parameters];这行代码

    终于通了

  • 相关阅读:
    Linux系统学习之网络管理
    EntityFramework 6.1.2-beta2
    微软开源的30个基础设施项目-C#
    vs2015 Android SDK
    批量删除空的文件夹
    统一者管理员指南(Unifier Administration Guide)中文
    XXX全球 IP 地址库
    mssql2008R2 RCU-6083:ALTER database FWC SET READ_COMMITTED_SNAPSHOT ON
    ORA-01843: 无效的月份,执行sql语句更改为美国语言后仍然失败的解决办法
    Win7如何安装IIS来浏览ASP网站
  • 原文地址:https://www.cnblogs.com/pp-pping/p/8759006.html
Copyright © 2011-2022 走看看