我正在尝试将 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 服务时出现无效对象错误
将 POST 中的 json 发送到 Web API 服务时出错