リクエストの送信と応答の取得

私は私のWebサービスを呼び出して私のサーバー上で実行されているPHPコードを持っています。整数値を送信するデータを処理します。私はそれを得ることができますか?ここで私のリクエストURLです:

  NSString *requestURL=[NSString stringWithFormat:@"%@?u=%@&  p=%@&platform=ios",url,txtUserName.text,txtPassword.text];

更新コメント:私は私のserver.ItにPHPファイルを持って3引数を取ると私のユーザーを登録し、1のような値を返します(成功のために、2重複)。私は私のサーバーに要求を送信する必要があります:

url="http://smwebtech.com/Pandit/web_service/signup.php?u=Test&p=password&platform=ios"

このリクエストをサーバーに送信し、サーバーから戻り値を取得するにはどうすればよいですか?

1
あなたの問題についてもう少し説明してもらえますか?サーバーへのHTTPリクエストの作成方法を知りたいですか?
追加された 著者 Kristofer Sommestad,
どのようなエンコードの種類は、サーバー側のJSONまたは直接XMLで行うことができます。
追加された 著者 Nimit Parekh,

3 答え

NSURLConnectionを使用できます。 NSURLConnectionDataDelegate プロトコルを実装し、 NSURLConnection クラスを使用する必要があります。

-(void) requestPage
{
    NSString *urlString = @"http://the.page.you.want.com";
    NSURL *url = [NSURL URLWithString:urlString];

    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLCacheStorageAllowed timeoutInterval:20.0f];


    responseData = [[NSMutableData alloc] init];
    connection = [[NSURLConnection connectionWithRequest:request delegate:self] retain];
    delegate = target;
}


-(void) connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{   
    if ([response isKindOfClass:[NSHTTPURLResponse class]])
    {
        NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse*) response; 
        //If you need the response, you can use it here
    }
}

-(void) connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
    [responseData appendData:data];
}

-(void) connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
    [responseData release];
    [connection release];
}

-(void) connectionDidFinishLoading:(NSURLConnection *)connection
{
    if (connection == adCheckConnection)
    {
        NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];

        //You've got all the data now
        //Do something with your response string


        [responseString release];
    }

    [responseData release];
    [connection release];
}
6
追加された
接続により、データを一度に返すことは保証されません。 responseData は、接続がすべてのデータを返すまでこの情報を収集し、私の例では文字列に変換します。
追加された 著者 James Webster,
最終的な値は connectionDidFinishLoading で返される値で、文字列としては文字列に変換された値です
追加された 著者 James Webster,
編集したことがなければ、編集されたリンクがあります。あなたは十分に下にスクロールしていないと確信していますか? ;)
追加された 著者 James Webster,
コード内のresponseDataとは何ですか?
追加された 著者 sohel14_cse_ju,
私の質問で更新を確認してください。
追加された 著者 sohel14_cse_ju,
はい、didFinishメソッドはあなたの以前のアップデートにはなかった。私はそれを理解した。あなたの応答とproeprガイドラインのための感謝...
追加された 著者 sohel14_cse_ju,
申し訳ありませんが、私はいくつかの仕上げが変更されたことを意味し、それは働いた..感謝..
追加された 著者 sohel14_cse_ju,
  1. visit HTTPRequest and setup it in your project according to given instructins.
  2. TouchJSON - download and put it in your project.
  3. below are the methods you can use for sending request, and getting response.

      -(void) SendAsyncReq:(NSString *)urlString 
       {
    
    
    NSLog(@"URL IS: %@",urlString);
    NSURL *url = [NSURL URLWithString:[urlString     stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
    
    
    ASIHTTPRequest *request1 = [ASIHTTPRequest requestWithURL:url];
    
    [request1 setDelegate:self];
    
    
        [request1 startAsynchronous];
    }
    
      /// THIS METHOD WILL BE CALLED IF REQUEST IS COMPLETED SUCCESSFULLY
    
     - (void)requestFinished:(ASIHTTPRequest *)response
    {
    NSData *responseData = [response responseData];
    
    CJSONDeserializer *jsonDeserializer = [CJSONDeserializer   deserializer];
    
    NSDictionary *resultsDictionary = [jsonDeserializer  deserializeAsDictionary:responseData error:nil];
    
    NSLog(@"Response is: %@",resultsDictionary);
    
    
        }
    
     /// THIS METHOD WILL BE CALLED IF REQUEST IS FAILED DUE TO SOME REASON.
    
    - (void)requestFailed:(ASIHTTPRequest *)response
    {
    NSError *error = [response error];
    NSLog(@"%d", [error code]);
    if([error code] !=4)
    {
        NSString *errorMessage = [error localizedDescription];
        UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error"
                                                            message:errorMessage
                                                       delegate:nil
                                              cancelButtonTitle:@"OK"
                                              otherButtonTitles:nil];
        [alertView show];
        [alertView release];
    }
    
    
    
    }
    

#import "CJSONDeserializer.h"と#import "ASIHTTPRequest.h"をクラスにインポートする必要があります。 これが助けてくれるといいなあ

0
追加された
私は、URLを開いて、単純にHTMLを印刷する..これは動作しません..あなたはXMLまたはJSONを作る必要があります。それは私がiPhoneの端で解析するだろう。私の答えでは、私は応答を取得するコードを提供し、JSONを解析します。
追加された 著者 waheeda,
私の質問で更新を見てください。
追加された 著者 sohel14_cse_ju,

サーバーへのHTTPリクエストを作成する方法を探しているなら、これを行うのに役立ついくつかのフレームワークがあります。最近まで、 ASIHTTPRequest が私が好むものでしたが、残念ながらそれは中止されました。

Google's API Client Library is also a good option, as well as a number of others suggested by the creator of ASIHTTPRequest.

あなたを始めさせるためにそこにたくさんのドキュメントがあるはずです。

EDIT: To make your specific request with ASIHTTPRequest, do the following in a class with the protocol ASIHTTPRequestDelegate:

/**
 * Make a request to the server.
 */
- (void) makeRequest {
   //compile your URL string and make the request
    NSString *requestURL = [NSString stringWithFormat:@"%@?u=%@&  p=%@&platform=ios", url, txtUserName.text, txtPassword.text];

    NSURL *url = [NSURL URLWithString:requestURL];
    ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
    [request setDelegate:self];
    [request startAsynchronous];
}

/**
 * Handle the response from the previous request.
 * @see ASIHTTPRequestDelegate
 */
- (void) requestFinished:(ASIHTTPRequest*)request {
    NSString *responseString = [request responseString];
   //do whatever you need with the response, i.e. 
   //convert it to a JSON object using the json-framework (https://github.com/stig/json-framework/) 
}
0
追加された
私の質問で更新を見てください。
追加された 著者 sohel14_cse_ju,
私はいくつかのサンプルコードで投稿を更新しました。
追加された 著者 Kristofer Sommestad,