2012-03-13 2 views
0

ウェブサービスを持っています。 Webサービスに接続して3つのパラメータを渡すには、リンゴのコードが必要です。 Objective Cの新機能です。誰でもサンプルコードを提供したり、これを通して私を導くことができますか? StackOverflowでリンクを検索しました。しかし、それらを理解することはできません。アップルのiPhoneでのWebサービス

ありがとうございました。

+0

Search ** "GoogleでのWebサービスの実装方法" ** **ここで直接質問をする前にGoogleで検索してください。 –

答えて

0

あなたがNSObjectののクラスを作成し、コードの下で与えられた3パラメータで.hファイル内のメソッドを定義する最初のaksharその後、SOAPメッセージをオーケー使用: - .hファイルで

@interface GetPartParser : NSObject <NSXMLParserDelegate> 
{ 
    NSXMLParser *xmlParser; 
    NSMutableArray *getPartArr; 
    NSMutableDictionary *item; 
    NSString *currentElement; 
    NSMutableString *part_urlStr, *partNameStr; 
} 
@property (nonatomic,retain) NSMutableArray *getPartArr; 
-(void) fetchPartXMLData:(NSInteger)empid:(NSInteger)serid:(NSInteger)seaid:(NSInteger)episodeid; 

との.mファイルに: - あなたが

を受け入れたとして、それをマークし、次に好きなら

-(void) fetchPartXMLData:(NSInteger)empid:(NSInteger)serid:(NSInteger)seaid :(NSInteger)episodeid 
{ 
    NSURL *myURL = [NSURL URLWithString:@"http://webservices.asmx"]; 
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL: myURL cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0]; 

    NSString *soapMessage = [NSString stringWithFormat:@"<?xml version=\"1.0\" encoding=\"utf-8\"?>" 
          "<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">" 
          "<soap:Body>" 
          "<GetPart xmlns=\"http://tempuri.org/\">" 
          "<empid>%d</empid>" 
          "<serid>%d</serid>" 
          "<seaid>%d</seaid>" 
          "<episodeId>%d</episodeId>" 
          "</GetPart>" 
          "</soap:Body>" 
          "</soap:Envelope>",empid,serid,seaid,episodeid]; 
    NSLog(@"soapMessage :%@",soapMessage); 
    [request addValue:@"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"]; 
    [request addValue:@"http://tempuri.org/GetPart" forHTTPHeaderField:@"SOAPAction"]; 

    NSString *msgLength = [NSString stringWithFormat:@"%d",[soapMessage length]]; 
    [request addValue:msgLength forHTTPHeaderField:@"Content-Length"]; 
    [request setHTTPMethod: @"POST"]; 
    [request setHTTPBody:[soapMessage dataUsingEncoding:NSUTF8StringEncoding]]; 

    NSURLResponse *returnedResponse = nil; 
    NSError *returnedError = nil; 
    NSData *barData = [NSURLConnection sendSynchronousRequest:request returningResponse:&returnedResponse error:&returnedError]; 
    NSString *barString = [[NSString alloc] initWithBytes:[barData bytes] length:[barData length] encoding:NSUTF8StringEncoding]; 
    NSLog(@"barString :%@",[[barString stringByReplacingOccurrencesOfString:@"&lt;" withString:@"<"] stringByReplacingOccurrencesOfString:@"&gt;" withString:@">"]); 

    NSData* data=[[[barString stringByReplacingOccurrencesOfString:@"&lt;" withString:@"<"] stringByReplacingOccurrencesOfString:@"&gt;" withString:@">"] dataUsingEncoding:NSUTF8StringEncoding]; 

    xmlParser = [[NSXMLParser alloc] initWithData:data];  
    [xmlParser setDelegate:self]; 
    [xmlParser setShouldResolveExternalEntities:NO]; 
    [xmlParser setShouldProcessNamespaces:NO]; 
    [xmlParser setShouldReportNamespacePrefixes:NO]; 
    [xmlParser parse]; 
} 
- (void)parserDidStartDocument:(NSXMLParser *)parser 
{ 
    getPartArr =[[NSMutableArray alloc] init]; 
} 

- (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError 
{ 
    NSString * errorString = [NSString stringWithFormat:@"Unable to download story feed from web site (Error code %i)", [parseError code]]; 
    UIAlertView * errorAlert = [[UIAlertView alloc] initWithTitle:@"Error loading content" message:errorString delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
    [errorAlert show]; 
} 

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict 
{ 
    { 
     currentElement = [elementName copy]; 
     if ([elementName isEqualToString:@"part"]) 
     { 
      item = [[NSMutableDictionary alloc] init]; 
      part_urlStr = [[NSMutableString alloc]init]; 
      partNameStr = [[NSMutableString alloc]init]; 
     } 
    } 
} 

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string 
{ 
    if ([currentElement isEqualToString:@"part_url"]) 
    { 
     [part_urlStr appendString:string]; 
    } 
    if ([currentElement isEqualToString:@"partName"]) 
    { 
     [partNameStr appendString:string]; 
    } 

} 

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName 
{ 
    if ([elementName isEqualToString:@"part"]) 
    { 
     [item setObject:part_urlStr forKey:@"part_url"]; 
     [item setObject:partNameStr forKey:@"partName"]; 
     [getPartArr addObject:[item copy]]; 
    } 
    NSLog(@"item dictionary....%@",partNameStr); 
} 

- (void)parserDidEndDocument:(NSXMLParser *)parser 
{  
    NSLog(@"getPartArr :%@",getPartArr); 

} 

それはあなたを助け、あなたが望むものを与える...

+0

ok ..ありがとうございます。これを試してみましょう。そして、パラメータが私たちのiPhoneアプリを通じてサービスによって受け入れられるかどうかを知る方法はありますか?私はプロキシ設定を通過する必要があります。このメソッドはそのrtで動作しますか? –

+0

あなたの3つのパラメータを渡すと、サーバーからの応答がNSLogだけの応答を得て、コンソールウィンドウで表示されます... –

+0

その正常に動作します。私はDidRecieve Response rtにNSLogを置くべきですか?認証エラーが発生しています。 PROXYを通過できません... –

1
NSString *urlString= [NSString stringWithFormat:@"http://demo.xyz.com/proj/webservices/display_records/1/%@%@%@",myid,name,password]; 

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:urlString]]; 
conn= [[NSURLConnection alloc]initWithRequest:request delegate:self]; 

if(conn) 
{ 
    webdata=[[NSMutableData data]retain]; 
} 

使用defalut接続方法

+0

connとは何ですか?サンプルコードは良いでしょう。ここで物事を試しています。しかし、Webサービスにヒットすることができます。それは正しいサービスを呼び出したかどうかを確認する方法を知らないのですか? XMLとSOAPメッセージを使用しています。 –

+0

その基本。あなたはcode.connから抜け出すことができますNSURLConnection型のオブジェクトです。私たちが近づくように出力を表示することはできますか? –

0

WS結果を得るためのイベント簡単な方法は次のとおりです。

NSString *urlString= [NSString stringWithFormat:@"http://demo.xyz.com/proj/webservices/display_records/1/%@%@%@",myid,name,password]; 
NSString *wsRes = [NSString stringWithContentsOfURL:urlStribng encoding: NSUTF8StringEncoding error:nil]; 

は、あなたがそれを使用しようとしている場合は、エラーハンドリングと、このサンプルを拡張することを検討してください。

+0

詳細を教えてください! –

関連する問題