我在.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");
}
我也在设置内容类型,如下所示:
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>
答案 0 :(得分:4)
我严格掌握iOS的知识以及正确的语法是什么,但为了让ASMX Web服务返回JSON,您需要使用HTTP POST动词调用它,并将Content-Type
请求标头设置为{{ 1}}(从你的代码中看不到这一点)。它还会使用application/json
属性预先结果,例如:
d