データベース(実際にはローカルホスト内)を使用するアプリを試してみましたが、ASIHTTPRequestを試してみましたが、iOS 5で非常に多くの問題が発生しました(そこでASIHTTPRequestフォームの使用方法を学びました: http:// www .raywenderlich.com/2965/how-to-write-an-ios-app-that-uses-a-web-service
今私はApple:NSURLRequest/NSURLConnectionなどによって提供されるAPIを試しています...
Appleオンラインガイドを読んで、この最初のコードを作成します:
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL
URLWithString:@"http://localhost:8888/testNSURL/index.php"]
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:60.0];
[request setValue:@"Hello world !" forKey:@"myVariable"];
NSURLConnection *theConnection=[[NSURLConnection alloc] initWithRequest:request delegate:self];
if (theConnection) {
receiveData = [NSMutableData data];
}
}
APIに必要なデリゲートを追加しました
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
- (void)connection:(NSURLConnection *)connection
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
これが私のphpコードです:
<?php
if(isset($_REQUEST["myVariable"])) {
echo $_REQUEST["myVariable"];
}
else echo '$_REQUEST["myVariable"] not found';
?>
では、何が問題なのですか?アプリを起動すると、次の出力ですぐにクラッシュします:
****
**> 2012-04-09 22:52:16.630 NSURLconnextion[819:f803] *** Terminating app
> due to uncaught exception 'NSUnknownKeyException', reason:
> '[<NSURLRequest 0x6b32bd0> setValue:forUndefinedKey:]: this class is
> not key value coding-compliant for the key myVariable.'
> *** First throw call stack: (0x13c8022 0x1559cd6 0x13c7ee1 0x9c0022 0x931f6b 0x931edb 0x2d20 0xd9a1e 0x38401 0x38670 0x38836 0x3f72a
> 0x10596 0x11274 0x20183 0x20c38 0x14634 0x12b2ef5 0x139c195 0x1300ff2
> 0x12ff8da 0x12fed84 0x12fec9b 0x10c65 0x12626 0x29dd 0x2945) terminate
> called throwing an exception**
****
私は推測します、それは何かがこの行に間違っていることを意味します:
[request setValue:@"Hello world !" forKey:@"myVariable"];
この行にコメントすれば実際に機能します。
私の質問は:NSURLRequestとNSURLConnexionを使用してPHP APIにデータを送信するにはどうすればよいですか?
助けてくれてありがとう。
P.S.ちなみに、私はサーバーについての知識が乏しいです、PHP ect、.。
これを試して:
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL
URLWithString:@"http://localhost:8888/testNSURL/index.php"]
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:60.0];
[request setHTTPMethod:@"POST"];
NSString *postString = @"myVariable=Hello world !";
[request setHTTPBody:[postString dataUsingEncoding:NSUTF8StringEncoding]];
NSURLConnection *theConnection=[[NSURLConnection alloc] initWithRequest:request delegate:self];
if (theConnection) {
receiveData = [NSMutableData data];
}
以下のコードを試してください。これは、Webサービス(json)を利用する簡単な方法の1つです。
NSURL *url = [NSURL URLWithString:@"yourURL"];
NSMutableURLRequest *urlReq=[NSMutableURLRequest requestWithURL:url];
NSURLResponse *response;
NSError *error = nil;
NSData *receivedData = [NSURLConnection sendSynchronousRequest:urlReq
returningResponse:&response
error:&error];
if(error!=nil)
{
NSLog(@"web service error:%@",error);
}
else
{
if(receivedData !=nil)
{
NSError *Jerror = nil;
NSDictionary* json =[NSJSONSerialization
JSONObjectWithData:receivedData
options:kNilOptions
error:&Jerror];
if(Jerror!=nil)
{
NSLog(@"json error:%@",Jerror);
}
}
}
お役に立てれば。