如何在iOS设备和ASP.NET URL之间发送和接收JSON POST?
我正在开发一个需要与Windows服务器共享数据的iDevice应用程序。 我已经在网上看了很多例子,并提出了下面列出的实现。 iOS应用程序将JSON发送到Web服务器,并收到一个JSON响应。 但是,这个回应并不是我所期望的。 我收到{"d": "{\"name\": \"John Doe\", \"email\": \"test@gmail.com\"}"}
而不是{\"name\": \"John Doe\", \"email\": \"test@gmail.com\"}
任何想法“d”来自哪里?
iOS代码:
-(void)checkWithServer { NSOperationQueue *queue = [[NSOperationQueue alloc] init]; NSURL *postURL = [NSURL URLWithString: @"http://texas/WebSite3/Service.asmx/doSomething"]; NSDictionary *jsonDict = [[NSDictionary alloc] initWithObjectsAndKeys: @"test@gmail.com", @"email", @"John Doe", @"name", nil]; NSError *error; NSData *jsonData = [NSJSONSerialization dataWithJSONObject:jsonDict options:0 error:&error]; NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL: postURL cachePolicy: NSURLRequestUseProtocolCachePolicy timeoutInterval: 60.0]; [request setHTTPMethod: @"POST"]; [request setValue: @"application/json" forHTTPHeaderField: @"Accept"]; [request setValue: @"application/json; charset=utf-8" forHTTPHeaderField: @"content-type"]; [request setHTTPBody: jsonData]; [NSURLConnection sendAsynchronousRequest: request queue: queue completionHandler: ^(NSURLResponse *response, NSData *data, NSError *error) { if (error || !data) { // Handle the error } else { // Handle the success } } ]; }
networking服务器代码:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Services; using System.Web.Services.Protocols; using System.Web.Script.Services; using System.Runtime.Serialization; using System.Runtime.Serialization.Json; using System.Xml; using System.Xml.Linq; using System.Data; using System.Data.SqlClient; [WebService(Namespace = "http://texas/WebSite3")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. [System.Web.Script.Services.ScriptService] public class Service : System.Web.Services.WebService { public Service () { //Uncomment the following line if using designed components //InitializeComponent(); } [WebMethod] [ScriptMethod(ResponseFormat = ResponseFormat.Json)] public string doSomething(string email, string name) { return "{\"name\": \"" + name + "\", \"email\": \"" + email + "\"}"; } }
显然,Web服务器足够聪明,可以将JSON分开,并分配variables名称和电子邮件。