2012-04-09 34 views
10

Tôi đang cố gắng làm gì để ứng dụng trong đó sử dụng một cơ sở dữ liệu (trên thực tế trong localhost của tôi), tôi đã cố gắng với ASIHTTPRequest nhưng có quá nhiều rắc rối với iOS 5 (Tôi đã học được cách sử dụng hình thức ASIHTTPRequest có: http://www.raywenderlich.com/2965/how-to-write-an-ios-app-that-uses-a-web-serviceYêu cầu với NSURLRequest

Bây giờ tôi đang cố gắng với các API cung cấp bởi Apple: NSURLRequest/NSURLConnection vv ...

tôi đọc hướng dẫn trực tuyến của Apple và làm cho mã đầu tiên này:

- (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]; 

    } 

} 

tôi đã thêm các đại biểu cần thiết theo API

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response 

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data 

- (void)connection:(NSURLConnection *)connection 

- (void)connectionDidFinishLoading:(NSURLConnection *)connection 

Đây là mã php của tôi:

<?php 
if(isset($_REQUEST["myVariable"])) { 
    echo $_REQUEST["myVariable"]; 
} 
else echo '$_REQUEST["myVariable"] not found'; 
?> 

Vì vậy, những gì là sai? Khi tôi bắt đầu ứng dụng, nó sẽ ngay lập tức sụp đổ với sản lượng này:

**

**> 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** 

**

tôi đoán, nó có nghĩa là somethings là sai với dòng này:

[request setValue:@"Hello world !" forKey:@"myVariable"]; 

Nó thực sự hoạt động nếu tôi nhận xét dòng này.

Câu hỏi của tôi là: Làm cách nào để gửi dữ liệu tới API PHP, sử dụng NSURLRequest và NSURLConnexion?

Cảm ơn bạn đã trợ giúp.

P.S. Bằng cách này, tôi có kiến ​​thức kém về server, PHP vv, ...

Trả lời

14

thử điều này:

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]; 

} 

nhìn thấy ở đây https://stackoverflow.com/a/6149088/1317080

+0

Cảm ơn bạn đã trả lời nhanh! Thật không may điều này không hoạt động: Tôi có một lỗi trước khi biên dịch: "Không nhìn thấy @interface cho NSURLRequest tuyên bố chọn" setHTTPMethod ":/ – Edelweiss

+1

thay đổi yêu cầu của bạn để NSMutableURLRequest, chỉnh sửa câu trả lời của tôi cũng như –

+1

Vâng, ứng dụng không sụp đổ! Bây giờ làm thế nào tôi có thể có quyền truy cập vào phản ứng của máy chủ của tôi? Tôi nghĩ rằng đây là trong receiveData? Tin nhắn gì tôi nên gửi cho anh ta để có được "Xin chào thế giới" của tôi trở lại? – Edelweiss

4

Hãy thử đoạn code bên dưới nó là một trong những cách đơn giản để sử dụng dịch vụ web (json)

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); 
    } 
} 
} 

Hy vọng điều này sẽ hữu ích.