2011-08-10 38 views
2

JSON我已经创造了.NET一个简单的.asmx Web服务,如下图所示:修改.NET的.asmx Web服务返回的不是XML

[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> 
+1

仅供参考,根据您陈述的目标,iOS代码与此问题的解决方案无关。您的.NET服务ASMX或WCF? – Jeff

+0

ASMX服务... – azamsharp

+1

请参阅更新的帖子! – azamsharp

回答

4

我的iOS严格0知识和什么将正确的语法是,但为了使ASMX Web服务返回JSON,您需要使用HTTP POST动词调用它,并将Content-Type请求标头设置为application/json(不能从你的代码中执行此操作)。例如:

{"d": { foo: 'bar' }} 
+0

请参阅更新后的帖子。 – azamsharp