2012-06-20 10 views
0

웹 서비스가 있습니다. 작은 (썸네일 크기) 이미지의 기본 64 문자열 표현을 허용하는 데 사용합니다. 이 웹 서비스는 Fiddler와 함께 사용하고 수동으로 요청을 게시 할 때 매우 효과적입니다. NSMutableURLRequest (또는 ASIHTTPRequest)를 사용하여 동일한 요청을 실행하면 항상 413 상태 코드 (413은 요청 엔터티가 너무 큼)가 반환됩니다.NSMutableURLRequest http 상태 코드 413

NSMutableURLRequest를 사용하면 왜 Fiddler가 매번 200을 반환하는 반면 413은 NSMutableURLRequest에서 413이 될까요?

여기 NSMutableURLRequest 코드입니다. 아무나 아이디어가 있다면 나는 밀어 넣기를 할 수 있습니다.

 //the image request 
     NSMutableURLRequest *imageRequest=[NSMutableURLRequest requestWithURL:[NSURL URLWithString:POST_IMAGE_API_URL] 
                    cachePolicy:NSURLRequestUseProtocolCachePolicy 
                   timeoutInterval:240.0]; 

     //the post parameters 
     [imageRequest setHTTPMethod:@"POST"]; 
     [imageRequest setHTTPBody:[imageMessage dataUsingEncoding:NSUTF8StringEncoding]]; 
     [imageRequest setValue:@"text/xml" forHTTPHeaderField:@"Content-Type"]; 


     //a few other things 
     NSURLResponse* imageresponse; 
     NSError *imageerror; 


     NSData* imageresult = [NSURLConnection sendSynchronousRequest:imageRequest returningResponse:&imageresponse error:&imageerror]; 
     NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse*)imageresponse; 

     NSLog(@"imageresponse: %d", httpResponse.statusCode); 

답변

0

나는 이것을위한 해결책을 발견했다. 이 문제는 애플 측에서가 아니라 IIS 측에서 제기되었습니다. 각 서비스에 대해 "uploadReadAheadSize"를 지정하는 WCF의 web.config 파일에 지정된 것 이상의 IIS 호스팅 응용 프로그램 (내 WCF 서비스 중 하나)에 대한 추가 매개 변수가 있습니다. 나는 이것을 증가 시켰고 413은 사라졌다. 흥미롭게도 서비스가있는 서버와 동일한 네트워크의 데스크톱 클라이언트에서 Fiddler의 HTTP 요청을 보낼 때이 오류가 발생하지 않았습니다. 기본적으로 나는 this guy's problem에 대한 해결책을 가졌지 만 자신의 상황은 아닙니다. 나의 해결책은 그의 맥락이었다.

1

나는 코드의이 비트 볼 때 : 나는 당신이 당신의 "POST_IMAGE_API_URL"#DEFINE에서 일부 괴팍스러운 문자가 같은데요

//the image request 
NSMutableURLRequest *imageRequest = 
    [NSMutableURLRequest requestWithURL:[NSURL URLWithString:POST_IMAGE_API_URL] 
          cachePolicy:NSURLRequestUseProtocolCachePolicy 
         timeoutInterval:240.0]; 

, 당신이 전달하는 매개 변수의 대부분을 을 따라서.

URL encode the URL string URL 요청을 전달해야합니다. 일을

시도 :

// assuming POST_IMAGE_API_URL starts with a "@" character 
NSString * yourURLAsString = [NSString stringWithString: POST_IMAGE_API_URL]; 
NSURL * yourEncodedURL = [yourURL stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]; 

과이 된 URLRequest 매개 변수로에서 "yourEncodedURL"를 전달합니다.

+0

감사합니다. 내 서비스 URL 문자열에는 전혀 재미있는 것이 없습니다. 나는 특별히 테스트를 위해 간단하고 증류 된 서비스를 함께 사용했다. 서비스의 끝점을 다음과 같은 헤더 파일에 정의했습니다. #define POST_IMAGE_API_URL @ "http://www.myserver.com/SRImageServ/SRImgService/" – jdb1a1

+0

잘 알겠습니다. 나는 배트에서 바로 문제를 봅니다. 해당 URL에는 스키마가 없습니다. "http : // myserver.com"을 시도하십시오 ... " –

+0

예, 있습니다. 죄송합니다. 붙여 넣기 기능이 잘 렸습니다. 정말 다음과 같습니다. #define POST_IMAGE_API_URL @ "http://www.myserver.com/SRImageServ/SRImgService/" – jdb1a1