2011-03-21 3 views
2

희,NSURLRequest 문제

NSURLRequest HTTP POST에 문제가있어 어떤 문제가 있는지 알 수 없습니다.

NSString *urlString = @"http://localhost:8888/postpage"; 
NSURL *url = [[NSURL alloc] initWithString:urlString]; 
NSMutableURLRequest *urlRequest=[NSMutableURLRequest requestWithURL:url]; 

[url release]; 


    [urlRequest setHTTPMethod:@"POST"]; 
    [urlRequest addValue: msgLength forHTTPHeaderField:@"Content-Length"]; 
    [urlRequest setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"content-type"]; 
    NSString *postString = @"sometext=Hello&language=en"; 
    NSString *msgLength = [NSString stringWithFormat:@"%d", [postString length]]; 
    [urlRequest setHTTPBody:[postString dataUsingEncoding:NSUTF8StringEncoding]]; 


NSString *returnString = [[NSString alloc] initWithData:[NSURLConnection sendSynchronousRequest:urlRequest returningResponse:nil error:nil] encoding:NSUTF8StringEncoding]; 
NSLog(@"%@",returnString); 

NSLog의 결과이다 :

<html> 
    <head> 
    </head> 
    <body> 
     NOT SET 
    </body> 
</html> 

이 데이터를 작성하는 제 목표 C 코드

<html> 
<head> 
</head> 
<body> 
    <?php 
     if (! isset($_POST['sometext'])) { 
      echo "NOT SET"; 
     } else { 
      echo $_POST['sometext']; 
     } 
    ?> 
</body></html> 

이다

:

내 서버 측 PHP이고 이미 감사드립니다.

+0

전에 라인을 이동하십시오 콘텐츠 길이 및 콘텐츠 유형을 추가 하시겠습니까? 서버가 해당 필드를 확인합니까? 답장을 기반으로 답변을 추가 할 수 있습니다. –

+0

내 편집을 참조하십시오. 하지만 여전히 작동하지 않습니다. –

+0

사용중인 인코딩 스타일에 대해 확실합니까? 또한 urlRequest가 아니고 요청하지 않아야합니까? 또한 http body를 설정하기 전에 추가해야합니다. 실제로 실행중인 코드를 게시 할 수 있습니까? –

답변

4

저도 같은 문제에 걸쳐 몇 번을오고,이 솔루션은 요청에 이것을 추가했다 :

[urlRequest setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"content-type"]; 
0

나는 당신이 아니라 당신의 문제처럼 쉽게 핸들 HTTP 요청은 단지 ASIFormDataRequest를 사용할 수있는 ASIHTTPRequest Library을 시도 할 수 있습니다 제안하지만, 또한 비동기 처리가 쉽습니다.

+0

해당 라이브러리의 저작권은 어떻게됩니까? 무료로 사용할 수 있습니까? –

+0

예. BSD 라이센스 –

+1

BSD는 무료이며 비 침습적이므로 상업적 프로젝트에서 소스 코드에 대한 권리를 포기하지 않고 사용할 수 있습니다. – MCannon

2

문제의 가능한 소스 코드에서 당신이 msgLength 변수에 값을 할당하기 전에 콘텐츠 길이 헤더를 설정하는 사실 일 수 있습니다. 산부인과의 Obj-C 상기 전무 객체 반환 전무 메소드 (및 전무가 0), 당신은 0으로 내용 - 아이폰에 설정되어 있기 때문에 당신입니다

NSString *msgLength = [NSString stringWithFormat:@"%d", [postString length]]; 

[urlRequest addValue: msgLength forHTTPHeaderField:@"Content-Length"]; 
관련 문제