0

Objective C から WCF サービス コールを実行しようとしています。以下のコードを作成しています。これも Web のどこかから取得しました。呼び出される特定のメソッドについて言及する場所がわかりませんでした。

-(void)viewDidLoad {

[super viewDidLoad];

//Web Service Call
NSString *soapMessage = [NSString stringWithFormat:

                         @\"<?xml version=\\"1.0\\" encoding=\\"UTF-8\\"?>\n\"

                         \"<SOAP-ENV:Envelope \n\"
                         \"xmlns:xsd=\\"http://www.w3.org/2001/XMLSchema\\" \n\"
                         \"xmlns:xsi=\\"http://www.w3.org/2001/XMLSchema-instance\\" \n\" 
                         \"xmlns:SOAP-ENC=\\"http://schemas.xmlsoap.org/soap/encoding/\\" \n\"


                         \"SOAP-ENV:encodingStyle=\\"http://schemas.xmlsoap.org/soap/encoding/\\" \n\"


                         \"xmlns:SOAP-ENV=\\"http://schemas.xmlsoap.org/soap/envelope/\\"> \n\"


                         \"<SOAP-ENV:Body> \n\"

                         \"<GetMembers mlns=\\"http://tempuri.org/\\">\"


                         \"</GetMembers> \n\"                            \"</SOAP-ENV:Body> \n\"

                         \"</SOAP-ENV:Envelope>\"]; 

//[[NSURLCache sharedURLCache] removeAllCachedResponses];

NSURL *url = [NSURL URLWithString:@\"http://[IP_ADDRESS_OF_WCF_SERVER]/IphoneService/Service1.svc\"];                           


NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:url];                         


NSString *msgLength = [NSString stringWithFormat:@\"%d\", [soapMessage length]];              


[theRequest addValue: @\"text/xml; charset=utf-8\" forHTTPHeaderField:@\"Content-Type\"];     

[theRequest addValue: @\"http://tempuri.org/IService1/GetMembers\" forHTTPHeaderField:@\"Soapaction\"];


[theRequest addValue: msgLength forHTTPHeaderField:@\"Content-Length\"];


[theRequest setHTTPMethod:@\"POST\"];     
[theRequest setHTTPBody: [soapMessage dataUsingEncoding:NSUTF8StringEncoding]];


NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self];



if(theConnection) {
    webData = [[NSMutableData data] retain];


}
else {
    NSLog(@\"theConnection is NULL\");


}

}

サービス Service1 にメソッド iPhoneMethod() があるとします。呼び出しのどこでこれについて言及すればよいでしょうか。あるいは他に方法があるのか​​もしれません。ajax呼び出しで「http://[IP]/[Service Path]/Service1.svc/iPhoneMethod」でそうなのか

4

1 に答える 1

0

WCF SOAP メッセージでは、ヘッダーにSOAPActionメソッドを指定する が含まれています。これは、 OperationContractAttribute.Action プロパティの値を定義します。

一般的な形式はhttp://EndpointAddress/MethodName.

したがって、コードを簡単に読むと(目的cがわからない場合):

[theRequest addValue: @\"http://tempuri.org/IService1/GetMembers\" forHTTPHeaderField:@\"Soapaction\"];

tempuri.org を実際のサービス エンドポイントに変更する必要があります。

于 2013-03-15T16:22:14.257 に答える