ios post传输dictionary到服务器端是否为json格式?

时间:2022-12-02 08:49:25
我现在在用MKNetwork,我看一个demo发现用post方式发送是先将参数封装在NSdictionary中,虽然参数里面包含字符串“JSON”,但是最后用MKNEetworkOperation发出去的数据就是dictionary,好像没有把dictionary转成json再发出去啊?还是dictionary本身已经是json格式了?我的小伙伴在服务器端写了个函数,但是函数接收的参数是c#的string,我想问发dictionary的话服务器的接收到的是jason格式的string吗?

6 个解决方案

#1


MKNetwork在真正开始请求的时候,会把dictionary转成json格式的字符串,它之所以在外面使用dictionary,是为了方便你把key-value封装起来。

#2


post到服务器端的应该是json格式,ios中使用dictionary封装的键值对中的key,就是需要在服务器端根据key拿到value.如c#
string value = request.From[key];

#3


上面拼写错误,更正  
request.Form[key];

#4


[op setPostDataEncoding:MKNKPostDataEncodingTypeJSON];

#5


ios中使用dictionary封装的键值对中的key,就是需要在服务器端根据key拿到value
但不是json格式,如果你做过web开发,你就很清楚了,比如javaee代码:
String value = request.getParameter("key");

假如ios代码为:
NSMutableDictionary *map = [NSMutableDictionary dictionary];
[map setValue:@"1" forKey:@"id"];
[map setValue:@"zhangsan" forKey:@"name"];
到服务器就变成:id=1&name=zhangsan
同样也是键值对的关系,多个参数用&隔开
可想而知,如果你的参数中包含&这些特殊符号,比如:[map setValue:@"zhang&san" forKey:@"name"];
那么这个参数必须要用URLEncoder进行UTF-8编码,否则是传不过去的

#6


纠正一下,之前一直在写java代码,ios才写了一个多月
所以变量名(NSMutableDictionary *map)都习惯用java那一套了,是在不好意思
其实都面向对象,逻辑都一样

#1


MKNetwork在真正开始请求的时候,会把dictionary转成json格式的字符串,它之所以在外面使用dictionary,是为了方便你把key-value封装起来。

#2


post到服务器端的应该是json格式,ios中使用dictionary封装的键值对中的key,就是需要在服务器端根据key拿到value.如c#
string value = request.From[key];

#3


上面拼写错误,更正  
request.Form[key];

#4


[op setPostDataEncoding:MKNKPostDataEncodingTypeJSON];

#5


ios中使用dictionary封装的键值对中的key,就是需要在服务器端根据key拿到value
但不是json格式,如果你做过web开发,你就很清楚了,比如javaee代码:
String value = request.getParameter("key");

假如ios代码为:
NSMutableDictionary *map = [NSMutableDictionary dictionary];
[map setValue:@"1" forKey:@"id"];
[map setValue:@"zhangsan" forKey:@"name"];
到服务器就变成:id=1&name=zhangsan
同样也是键值对的关系,多个参数用&隔开
可想而知,如果你的参数中包含&这些特殊符号,比如:[map setValue:@"zhang&san" forKey:@"name"];
那么这个参数必须要用URLEncoder进行UTF-8编码,否则是传不过去的

#6


纠正一下,之前一直在写java代码,ios才写了一个多月
所以变量名(NSMutableDictionary *map)都习惯用java那一套了,是在不好意思
其实都面向对象,逻辑都一样