异常情况如下:按照正常的写法,将上传对数据封装在nsdictionary里,然后检验是否符合json格式化,调用系统的json序列化方法将nsdictionary转化为json数据然后上传,

异常结果如下:,后台只能收到收到nsdictionary的第一个{,后测试数据从nsdictionary的第一个{断开了

由于控制台打印的nsdictioanry数据如下

故猜测上传数据时"\n"作为了数据的分隔符被切断了,所以将nsdictionary转化为nsstring并且将"\n"替换为空格然后发现数据无法上传,最后追加了"\n"到nsstring末端,上传成功

完整代码如下:

#pragma mark - GCDAsyncSocketDelegate
/**
* 链接成功
*
* @param sock sock实例
* @param host IP
* @param port 端口
*/
-(void)socket:(GCDAsyncSocket *)sock
didConnectToHost:(NSString *)host
port:(uint16_t)port
{
NSLog(@"didConnectToHost");
// gpstype:2015
// name:账号
// pswd:密码 NSLog(sock.isConnected?@"YES":@"NO");
if (sock.isConnected)
{
/*
//nsstring上传需要加"\n"分隔符方可上传成功
[sock writeData:[@"ABCABCABCABCABCABC\n" dataUsingEncoding:NSUTF8StringEncoding]
withTimeout:-1
tag:0];
*/ NSDictionary* nsDictionaryUser=@{@"gpsinfo":@"Gpsinfo",@"pswd":self.passWord,@"other":@"",@"gpstype":@,@"name":self.name}; if ([NSJSONSerialization isValidJSONObject:nsDictionaryUser])
{
NSLog(@"isValidJSONObject");
NSError* error;
//先转nsdata再转nsstring是为了保证nsdictionary格式不变
NSData *nsDataUser= [NSJSONSerialization dataWithJSONObject:nsDictionaryUser
options:NSJSONWritingPrettyPrinted
error:&error];
NSString* json=[[NSString alloc] initWithData:nsDataUser
encoding:NSUTF8StringEncoding];
// NSLog(@"nsDictionaryUser:%@",json); json=[json stringByReplacingOccurrencesOfString:@"\n"
withString:@""];
//空格根据情况可以不去掉
json=[json stringByReplacingOccurrencesOfString:@" "
withString:@""];
json=[json stringByAppendingString:@"\n"];
NSLog(@"json:%@",json); [sock writeData:[json dataUsingEncoding:NSUTF8StringEncoding]
withTimeout:-
tag:]; //保持读取的长连接
[sock readDataWithTimeout:-
tag:]; if (error)
{
NSLog(@"localizedDescription:%@",[error localizedDescription]);
NSLog(@"localizedFailureReason:%@",[error localizedFailureReason]);
}
else
{
} } } }


数据上传成功了,后台可以根据数据返回数据了

最新文章

  1. YUM源
  2. Tigase集群设置
  3. Git pull 强制覆盖本地文件
  4. POJ3680 Intervals(最小费用最大流)
  5. 利用JSONP进行水坑攻击
  6. String.IsNullOrWhiteSpace和String.IsNullOrEmpty的区别
  7. Seesion工作原理
  8. js X年X周 转成 具体日期
  9. Spark性能调优之Shuffle调优
  10. Oracle总结【PLSQL学习】
  11. Android6.0 init 深入分析
  12. Erlang edoc 多级目录出错
  13. MyDAL - like && not like 条件 使用
  14. 使用graphviz画图
  15. windows安装并配置 nginx
  16. redis 高可用
  17. 「Android」单例的五种写法
  18. Tensorflow显示图片
  19. selenium-java,selenium安装配置
  20. Solr——从postgresql数据库导入数据

热门文章

  1. std::map Intro
  2. python 自动安装工具 setuptools(easy_install) 的使用
  3. (转)linux应用之test命令详细解析
  4. DEDE把变量放进session中,结果取值为null的问题
  5. Facebook TSDB论文Gorilla分析
  6. redis 读写锁实现
  7. 解决在 WP8/ WP8.1 项目中 引用 C++ 组件时出现的 System.TypeLoadException 错误
  8. vue将数据绑定到属性中
  9. Spring的注解积累
  10. 根据tomcat日志查找想要的错误日志