2014-06-16 4 views
1

나는 이것을 아침 내내 알아 내려고 노력해 왔습니다. MAMP를 사용하여 Objective-C 메소드에서 내 Mac의 로컬 서버로 POST 요청을 보냅니다. 코드가 실행되면 Objective-C 메서드가 성공적으로 연결되었지만 PHP 스크립트에서는 아무 것도받지 못합니다. this answer에 따라 송신 방법을 다시 작성 했으므로 송신이 정확해야합니다. 나는 행운을 빌어 10-15 번 비슷한 질문을했습니다. 내 생각 엔 URL에 문제가있는 것 같지만 문제를 찾을 수 없습니다. 누군가가 내가이 문제를 해결하도록 도울 수 있다면, 좋을 것입니다.iOS 시뮬레이터에서 로컬 호스트로 포스트 요청 보내기

IP 주소 : 10.10.2.143

PHP 스크립트 주소 : http://localhost:8888/hello_world.php

목적 C :

- (void)hasToken:(STPToken *)token 
{ 
    NSLog(@"Received token %@", token.tokenId); 

    NSString *post = [NSString stringWithFormat:@"stripeToken=%@", token.tokenId]; 
    NSData *postData = [post dataUsingEncoding:NSUTF8StringEncoding]; 
    NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]]; 
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init]; 
    [request setURL:[NSURL URLWithString:@"http://10.10.2.143:8888/hello_world.php"]]; 
    [request setHTTPMethod:@"POST"]; 
    [request setValue:postLength forHTTPHeaderField:@"Content-Length"]; 
    [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; 
    [request setHTTPBody:postData]; 
    NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:request delegate:self]; 

    if (conn) 
    { 
     NSLog(@"Connection successful!"); 
    } 
    else 
    { 
     NSLog(@"Connection failed..."); 
    } 
} 

PHP :

<?php 
    echo "Hello, World!"; 
    echo $_POST; 
?> 
,536,913 여기

내 코드입니다 63,210

출력 :

// NSLog 
2014-06-16 12:19:45.428 PayPhone Prototype[6519:60b] Received token tok_104EMf4h7nUnb2nUWKejveb9 
2014-06-16 12:19:45.430 PayPhone Prototype[6519:60b] Connection successful! 

// PHP 
Hello, World!Array 

답변

1

바로 연결 개체를 다시 후

[conn start];

를 호출 ... 당신이 NSURLConnection에서 start 메서드 호출을 누락 것으로 보인다.

한가지 더, 당신은 성공을 처리하는 방법/그것은 단지 연결 개체 생성 (또는하지 않음) 것을 확인하기 때문에 정말 이해가되지 않는 경우를 실패, 연결이 성공하지 않는 것이 :

if (conn) 
{ 
    NSLog(@"Connection successful!"); 
} 
else 
{ 
    NSLog(@"Connection failed..."); 
} 

올바르게 연결 객체의 대리자 메서드를 구현해야합니다 : – connectionDidFinishLoading: – connection:didReceiveData: – connection:didFailWithError:를 (그것이 당신이 연결하고 질문에서 언급 한대로).

+0

감사합니다. 단지'[conn start]'메소드를 추가했는데, 행운은 없습니다. 나는 PHP로 무엇인가를 놓치고 있습니까? 데이터가 전송되었는지를 확인하기 위해'while' 루프 또는 뭔가가 필요합니까? – Impossibility

+0

위임자의 메소드, 특히'didFailWithError'를 구현하면 좀 더 많은 정보를 얻을 수 있습니다. 또한 GET으로 먼저 시도해보십시오 (더 쉽게 문제를 해결하기 위해). GET 요청은 빌드가 더 쉽습니다 ... – sergio

+0

또한 요청 URL에'localhost : 8888'을 사용해보십시오 ... – sergio

관련 문제