質問

OK、JSONやasiHttpRequestを使用するだけではないこの答えを見つけるのに苦労しています。しかし、私の質問はもう少し具体的だと思います。私は趣味としてのみプログラムしているので、私は専門家ではありません。そうは言っても、これについての私の抽象的な理解は完全にベースから外れている可能性があるため、質問は答えられないかもしれません。

基本的に、私がやりたいのは、Webサーバー上のPHPスクリプトにHTTPリクエストを送信することです。Webサーバーに値を返し、単純な整数値またはブール値を使用してください(yes/noを返すログインスクリプトを考えてください)。私はこれを理解するために自分の道を和らげようとしているので、この時点でセキュリティについて心配していません。

私が集めたものから、私は何かを使っての効果に

// Create the request.
NSURLRequest *theRequest=[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.apple.com/"]
                    cachePolicy:NSURLRequestUseProtocolCachePolicy
                timeoutInterval:60.0];
// create the connection with the request
// and start loading the data
NSURLConnection *theConnection=[[NSURLConnection alloc] initWithRequest:theRequest delegate:self];
if (theConnection) {
   // Create the NSMutableData to hold the received data.
   // receivedData is an instance variable declared elsewhere.
receivedData = [[NSMutableData data] retain];
} else {
// Inform the user that the connection failed.
}  

これはAppleのドキュメントからのものであり、私は一般的にこれを理解しています。したがって、URLを介して情報をPHPファイルに送信するとしましょう。

//pHp file gets information
//pHp file uses that information to check against a mySQL database
//pHp now has the variable $result with a value of 1 in it

また、私はそのすべてを罰金することができると仮定します。私の質問は、PHPからiOSの「nsmutabledata」変数に戻る値をどのように返すことができますか。私はそれを「エコー」しますか?例えば:

echo "$result";

そして、それはnsmutabledata(変数$ result)に入れられた情報ですか? PHP/HTMLなどを厳密に行っているかどうかは、セッション変数のようなものを使用して、さらにページが変数にアクセスできるようにすることができます。

または、データを私が知らないnsmutabaldataに戻す他のPHP関数がありますか?基本的に、これは私が問題を抱えている2つのリンク、PHPスクリプトからのデータの返却です。NSMutabledataが「Geting」であることが何であるかは本当にわかりません。

私は可能な限り詳細になろうとしたので、長い質問を申し訳ありません。これが私がやろうとしているすべてであると仮定してください、値を返してください。セキュリティは重要ではありません(私はこれを最も単純なレベルで行い、それを理解し、それを構築しようとしています)。 「Webサービスを書く」や「使用」などのあいまいな答えを避けようとしています _「それをするために、そして私はそれを行うためのより良い方法があると確信していますが、私はプログラムを急いでいるわけではありません - 私はこれをNSURLCONNECTION、PHP、NSMUTABLEATAとどのように理解するためにこれを学ぼうとしています。コグは一緒にフィットします。私が求めていることが技術的に不可能であり、意味をなさない場合、私もその答えを感謝しています。私は検索を試みましたが、このパズルの単一のピースに対する満足のいく答えが見つかりませんでした。

前もって感謝します。

編集:

私はもう試した

...
NSMutableData *receivedData = [[NSMutableData alloc] init];
receivedData = [[NSMutableData data] retain];
NSString *receivedDataString = [[NSString alloc] initWithData:receivedData encoding:NSUTF8StringEncoding];
label.text = receivedDataString; 
...

これは、基本的に次のようなサーバー上のPHPファイルを呼び出します。

<?pHp
$result = "TRUE";
var_dump($result);
?>

うまくいきません。私の問題はPHP側にあると思いますが、nsmutabledataオブジェクトに値を返す特別なコマンドはありますか? (たぶん私の質問をもっと明確にするためのいくつかの追加情報)。

編集II:

おそらく、以前に匿名でサイトを使用したことがあり、真新しいアカウントを持っていることがあるので、私は直接応答することはできません。データバック(nsmutabledata nsstringに変換されたときの私のnsmutabledataオブジェクトは空であるように見えます - 私の客観的なCが間違っていない限り、私はそれをほとんど最小限に抑えていたので、そうだとは思いません)。

役に立ちましたか?

解決

わかりました、私はそれを機能させたと思うので、他の誰かが同じことを探している場合に答えを投稿するつもりです。

サーバー上のPHPファイルは次のとおりです。

<?php
echo 'Works';
?>

私のHファイルには含まれています

#import <UIKit/UIKit.h>

@interface SampleViewController : UIViewController {
IBOutlet UIButton *theButton;
NSMutableData *receivedData;}
@property (nonatomic, retain) IBOutlet UIButton *theButton;
-(IBAction) clickTheButton:(id)sender;
@end

私のMファイルには関連部分が含まれています(他のすべては、SDKで作成するときにAppleがMファイルに入れる標準的なものです

-(IBAction) clickTheButton:(id)sender {
NSURLRequest *theRequest=[NSURLRequest requestWithURL:[NSURL URLWithString:@"<path to my php file>try.php"]
                                          cachePolicy:NSURLRequestUseProtocolCachePolicy
                                      timeoutInterval:60.0];
NSURLConnection *theConnection=[[NSURLConnection alloc] initWithRequest:theRequest delegate:self];
if (theConnection) {
    receivedData = [[NSMutableData data] retain];
    NSString *receivedDataString = [[NSString alloc] initWithData:receivedData encoding:NSUTF8StringEncoding];
    NSLog(@"This1: %@", receivedData);
    NSLog(@"This2: %@", receivedDataString);
} else {
    // Inform the user that the connection failed.
}
}

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response { 
[receivedData setLength:0];
NSLog(@"This3: %@", receivedData);
}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
// Append the new data to receivedData.
// receivedData is an instance variable declared elsewhere.
[receivedData appendData:data];
NSString *receivedDataString = [[NSString alloc] initWithData:receivedData encoding:NSUTF8StringEncoding];
NSLog(@"This4: %@", receivedDataString);
NSLog(@"This5: %@", receivedData);
}

NSLOGS出力は次のとおりです。

this1: '<>'

This2:

this3: '<>'

This4:機能します

this5: '<24726573 756c74>'

私の元の質問に答えるために、 echo 'Works'; 単語を返すPHPコードは、nsmutabledataオブジェクトに動作します。接続を設定した後、私は電話する必要がありました didRecieveData: エコーされた情報を実際にデータファイルに配置する方法。

他のヒント

基本的に、これは私が問題を抱えている2つのリンク、PHPスクリプトからのデータの返却です。NSMutabledataが「Geting」であることが何であるかは本当にわかりません。

HTTP要求を行っているように見える他のすべてのものと同じように機能する場合、要求されたURLから出力を含む文字列を取得するか、その出力(ヘッダーなどを含む)を取得できるオブジェクトを取得します。 。客観的なCやiOSについては何も知りませんが、スクリプトの出力を取り戻すだけだと賭けます。

言い換えると、

PHPからiOS 'nsmutabledata'変数に値を返すにはどうすればよいですか。私はそれを「エコー」しますか?

おそらく!

コードを試してみて、何が得られるか見てみませんか?それが機能する場合は、おめでとうございます:最初のWebサービスを作成しました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top