2011-12-23 13 views
1

jsonを使用してWCFサービスを消費するインターネット上のさまざまな例を見てきましたが、iOSを使用してコンシューマを消費したり、 iOSを使ったwcfサービスへの簡単なjson呼び出し。リクエスト/レスポンス用のJsonを使用したWCFサービスメソッドの使用

私は、WCFでのサービス・インターフェースがあります。また、私は、これらの属性を持っている私のクラスの実装に

[ServiceContract(Namespace = "")] 
[DataContractFormat(Style = OperationFormatStyle.Document)]  
public interface IService 
{ 
    [OperationContract] 
    [WebInvoke(Method = "POST", 
     BodyStyle = WebMessageBodyStyle.WrappedRequest, 
     RequestFormat = WebMessageFormat.Json, 
     ResponseFormat = WebMessageFormat.Json, 
     UriTemplate = "referenceData")] 
    string GetReferenceData(string referenceName); 
} 

を:

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] 
[ServiceBehaviorAttribute(IncludeExceptionDetailInFaults = true)] 

私はiOSのから取得しよう:

NSArray *keys = [NSArray arrayWithObjects:@"referenceName", nil]; 
NSArray *objects = [NSArray arrayWithObjects:@"test", nil]; 
NSDictionary *jsonDictionary = [NSDictionary dictionaryWithObjects:objects forKeys:keys]; 

NSData *jsonData = nil; 
NSString *jsonString = nil; 

if([NSJSONSerialization isValidJSONObject:jsonDictionary]) 
{ 
    jsonData = [NSJSONSerialization dataWithJSONObject:jsonDictionary options:0 error:nil]; 
    jsonString = [[NSString alloc]initWithData:jsonData encoding:NSUTF8StringEncoding]; 
    NSLog(@"%@", jsonString); 
} 

NSURL *url = [NSURL URLWithString:@"http://test.com/Service.TestService.svc"];  
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; 

[request setValue:@"application/json" forHTTPHeaderField:@"Content-type"]; 
[request setValue:jsonString forHTTPHeaderField:@"json"]; 
[request setHTTPMethod:@"POST"]; 
[request setHTTPBody:jsonData]; 

NSError *errorReturned = nil; 
NSURLResponse *theResponse =[[NSURLResponse alloc]init]; 
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&theResponse error:&errorReturned]; 
if (errorReturned) { 

} 
else { 
    NSString *response = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 

    NSLog(@"%@", response); 
} 

誰かが私を正しい方向に向けることができますか? WCF Test Clientを使用してサービスをテストすると、jsonレスポンスが返されますが、iOSコードから呼び出しを実行すると、エラーはスローされず、私の応答は空になります。

+0

こんにちは、上記のiOSリクエスト生成はWCFサービスのために働いています。 –

答えて

1

あなたはiOSからのリクエストをFiddlerで検査し、それをWCFテストクライアントからのリクエストと比較することをお勧めします。

関連する問題