助けてもらえますか?私は絶望的です。私はPHPスクリプトを持っています。パラメータが送信され、何らかの処理が行われ、エコーを使用して結果が出力されます。私は使用しました
[[NSString alloc] initWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"myPHPPathWithParameters"]] encoding:NSUTF8StringEncoding];
以前は、php が NSSTRing としてエコーした情報を取得するために使用していましたが、機能していましたが、現在は機能していません。NULL NSString を返します。とにかく、これを行う正しい方法は、接続の進行状況などを監視するためのデリゲート メソッドを実装するため、NSURLConnection を実装することだと思います。したがって、静的な NSMutableData *receivedData を宣言してから、iOS ドキュメントの例を使用しています。
NSURLRequest *req=[NSURLRequest
requestWithURL:[NSURL URLWithString:@"http://myphp.php?parameters=paramteres"]
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:30.0];
NSURLConnection *con=[[NSURLConnection alloc] initWithRequest:req delegate:self];
if (con)
receivedData = [[NSMutableData data] retain];
else
NSLog(@"Request failed to load.");
次に、デリゲート メソッドを実装します (自分自身で NSURLConnectionDataDelegate も宣言しています)。
-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
NSLog(@"RECEIVED DATA;");
[receivedData appendData:data];
}
-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{
NSLog(@"received response;");
[receivedData setLength:0];
}
-(void)connectionDidFinishLoading:(NSURLConnection *)connection{
NSLog(@"FINISHED;");
}
しかし、これらのメソッドは決して呼び出されません! ターミナルには、デリゲート メソッドが実行されたことを示すログ メッセージは表示されません。私が理解しているように、このメソッドが呼び出され、データが receivedData に追加されます。次に、connectionDidFinishLoading メソッドが呼び出されたら、receivedData から NSString を取得する必要があります。助言がありますか?NSURLConnection で同期要求クラス メソッドも試しましたが、そのメソッドは HTML 全体を取得します。php がエコーするものを取得し、アプリ内で使用するために NSString として解析したいだけです :(