2011-08-10 38 views
2

するには、以下のように私は、.NETで簡単なの.asmx Webサービスを作成しました:変更.NETの.asmx Webサービスは、JSONを返す代わりにXML

[WebMethod] 
[ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
public string Foo(string name) 
{ 
    var customer = new {Name = name}; 

    JavaScriptSerializer json = new JavaScriptSerializer(); 
    return json.Serialize(customer); 
} 

私は、このサービスを呼び出すと、それは代わりにJSONのXMLを返します。結果。私のiOSクライアントには、JSON形式を予期する辞書があります。

XMLの代わりにJSON形式を返すように.NETサービスを作成するにはどうすればよいですか?

.NetサービスはJSONの代わりにXMLを返すため、辞書にはデータが格納されません。

以下に示すように、私もコンテンツ・タイプを設定しています
- (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

FYI、あなたの述べられた目標に基づいて、iOSのコードは、この問題の解決には関係ありません。 .NETサービスASMXまたはWCFですか? – Jeff

+0

ASMXサービス... – azamsharp

+1

最新の記事をご覧ください! – azamsharp

答えて

4

私は厳密に0のiOSの知識と何を持っていますASMX WebサービスがJSONを返すためには、HTTP POST動詞を使用して呼び出す必要があり、Content-Typeリクエストヘッダーをapplication/jsonに設定する必要がありますあなたのコードからこれを行うe)。それはまた、例えば、dプロパティで結果をpreprendます:

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

更新された投稿をご覧ください。 – azamsharp

関連する問題