我正在尝试将 json 结构发送到 Web 服务器

Posted

技术标签:

【中文标题】我正在尝试将 json 结构发送到 Web 服务器【英文标题】:I am trying to send json structure to a web server 【发布时间】:2014-02-19 23:15:03 【问题描述】:

但是,每次我得到错误时

这是我的代码,希望你能帮助我:

首先,这是我应该发送到服务器的结构:


   "UDID": "UDID - limited to 5 calls per day" 
   "Hazard": 
     "TypeID": 3, 
     "Info": "Some Information" 
     "Name": "User Name", 
     "Phone": "User Phone" 
     "Email": "User Email" 
     "FBID": "User FaceBook ID", 
     "LocationLat": "LocationLat", 
     "LocationLng": "LocationLng", 
     "LocationDesc": "Location Description", 
     "Image": "a Base64 Image" 
     "Extension": "jpg, gif, etc ..." 
    
 

响应成功


  "error": 0,
  "Serial": "string : some serial number"

响应失败


  "error": 1,
  "errdesc": "Invalid Lat/Lng ,Type ID, etc..."

现在,你肯定看到了这两个库,所以,在这里创建它们:

我们在这里创建库

    

NSMutableDictionary * Hazard; 
     NSMutableDictionary * maindic; 
NSString  TypeID = @ "TypeID"; 
    NSString  info = @ "info"; 
    NSString  Name = @ "Name"; 
   NSString   Phone = @ "Phone"; 
  NSString    Email = @ "Email"; 
   NSString   FBID = @ "FBID"; 
    
   NSString   LocationLat = @ "LocationLat"; 
    NSString  LocationLng = @ "LocationLng"; 
    NSString  LocationDesc = @ "LocationDesc"; 
    NSString  Image = @ "Image"; 
    NSString  Extension = @ "Extension"; 
    
    
     Hazard = [[NSMutableDictionary alloc] initWithObjectsAndKeys: 0, TypeID, @ "", info, @ "", Name, @ "", Phone, @ "", Email, @ "", FBID, @ "", LocationLat, @ "", LocationLng, @ "", LocationDesc, @ "", Image, @ "", Extension, nil]; 

危险 dic 集:

[Hazard setValue: textField.text forKey: Name];

电话、图片...等等

现在问题来了,当用户单击按钮时,会激活以下代码...

NSString *uuidString = [[NSUUID UUID] UUIDString];



    maindic = [[NSMutableDictionary alloc]initWithObjectsAndKeys:uuidString,@"UDID", Hazard, @"Hazard", nil];

    NSData *DATA = [NSJSONSerialization dataWithJSONObject:maindic options:NSJSONWritingPrettyPrinted error:0];


    NSLog(@"JSON summary2: %@", [[NSString alloc] initWithData:DATA
                                                      encoding:NSUTF8StringEncoding]);

NSURL *url = [[NSURL alloc]initWithString:@"myserverblalal.com"];


    NSString *data_length = [[NSString alloc]initWithFormat:@"%lu", (unsigned long)[DATA length]];



    NSMutableURLRequest *MyRequest = [[NSMutableURLRequest alloc]initWithURL:url
                                                                     cachePolicy:0 timeoutInterval:60];

    [MyRequest setHTTPMethod:@"POST" ];
    [MyRequest setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
    [MyRequest setValue:@"application/json" forHTTPHeaderField:@"Accept"];
    [MyRequest setValue:data_length forHTTPHeaderField:@"Content-Length"];


    [MyRequest setHTTPBody:DATA] ;


    NSURLResponse *response;


    NSData *POSTRE = [NSURLConnection sendSynchronousRequest:MyRequest returningResponse:&response error:nil];
    NSString *theReply = [[NSString alloc] initWithBytes:[POSTRE bytes] length:[POSTRE length] encoding: NSASCIIStringEncoding];
    NSLog(@"Reply: %@", theReply);

这是我从服务器得到的响应

  回复:"error": 1, "errdesc": "Invalid UDID"

有没有人可以帮助我,并告诉我为什么会出错

谢谢

【问题讨论】:

作为旁注,请查看一些编码指南(适用于 ios 和一般情况) - 您的代码非常混乱,并且将来对其他人甚至您自己都几乎无法阅读。尤其是混合变量名与大写字母、下划线、小写字母、全部大写、驼峰式 - 都在那里...... 【参考方案1】:

显然服务器不喜欢你发送的 UUID。

请注意,您创建了一个 UUID(它只是一个编码为字符串的随机 128 位数字),但键是“UDID”,错误提示“UDID”无效。 UDID 是唯一设备标识符,它是用于标识特定设备(例如特定 iPhone)的代码。 UUID 是一个通用唯一标识符 - 完全不同的东西。

出于隐私原因,不再支持 UDID;作为替代,您将计算一次 UUID 并将其存储在 UserDefaults 中。

您最好与运行 Web 服务器的人员交谈,了解他们的期望。

【讨论】:

首先感谢您的快速响应,其次,我想也许我的错误在于将请求发送到服务器的代码例如:我从 ituns 中获取了我的 udid 号码并将其放入我的库就这样 maindic = [[NSMutableDictionary alloc] initWithObjectsAndKeys: myudid, @"UDID", Hazard, @"Hazard", nil];尽管如此,我还是得到了回复:2014-02-20 01:57:40.438 Hazard [155:60 b] 回复:"error": 1, "errdesc": "Invalid UDID" 也许,如果没有问题我的代码,我需要与在服务器上工作的人取得联系无论如何谢谢:)

以上是关于我正在尝试将 json 结构发送到 Web 服务器的主要内容,如果未能解决你的问题,请参考以下文章

使用 alamofire 将带有 JSON 对象和查询参数的 POST 请求发送到 REST Web 服务

将带撇号的 json 值发送到 Web 服务时出现无效对象错误

使用 JSON 框架将数值发送到 Web 服务

将 POST 中的 json 发送到 Web API 服务时出错

我正在尝试将 JSON 对象从客户端发送到服务器并接收响应,但我发现的所有方法要么不足,要么矫枉过正

如何将 JSON 对象从快递服务器发送到下一个 js 页面?