【发布时间】:2011-08-10 18:03:16
【问题描述】:
我在 .NET 中创建了一个简单的 .asmx Web 服务,如下所示:
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string Foo(string name)
{
var customer = new {Name = name};
JavaScriptSerializer json = new JavaScriptSerializer();
return json.Serialize(customer);
}
当我调用此服务时,它返回 XML 而不是 JSON 结果。我的 iOS 客户端有一个需要 JSON 格式的字典。
如何使 .NET 服务返回 JSON 格式而不是 XML?
字典永远不会被填充,因为 .Net 服务返回 XML 而不是 JSON。
- (void)requestFinished:(ASIHTTPRequest *)request
{
NSLog(@"status code %d",request.responseStatusCode);
if(request.responseStatusCode == 200)
{
NSString *responseString = [request responseString];
NSDictionary *responseDict = [responseString JSONValue];
NSLog(@"%@",[responseDict objectForKey:@"name"]);
}
NSLog(@"request finished");
}
我也在设置content-type,如下图:
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
[request addRequestHeader: @"Content-Type" value:
@"application/json; charset=utf-8"];
[request setPostValue:@"mama" forKey:@"name"];
[request setDelegate:self];
[request startAsynchronous];
我得到的返回响应是这样的:
<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://tempuri.org/">{"Name":"mama"}</string>
【问题讨论】:
-
仅供参考,根据您的目标,iOS 代码与此问题的解决方案无关。您的 .NET 服务是 ASMX 还是 WCF?
标签: .net web-services asmx