【问题标题】:Modifying .NET .asmx web service to return JSON instead of XML修改 .NET .asmx Web 服务以返回 JSON 而不是 XML
【发布时间】: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


【解决方案1】:

我对 iOS 的了解为 0 以及正确的语法是什么,但为了让 ASMX Web 服务返回 JSON,您需要使用 HTTP POST 动词调用它并将Content-Type 请求标头设置为application/json(从您的代码中看不到这样做)。它还将使用d 属性预先设置结果,例如:

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

【讨论】:

    猜你喜欢
    • 2011-02-14
    • 2012-06-20
    • 1970-01-01
    • 2020-06-02
    • 1970-01-01
    • 1970-01-01
    • 2012-02-26
    相关资源
    最近更新 更多