를 통과하지 않습니다 내 문제는 요청에 실제로 회신하는 것과 관련이 없기 때문입니다.아약스는 HTTP 본문
jQuery 1.10.2를 사용하고 있지만 순수 XMLHttpRequest
개체를 사용하면 정확히 동일한 결과를 얻습니다.
@implementation MyProtocol
+ (BOOL)canInitWithRequest:(NSURLRequest *)request {
// only "data/info" requests are welcome
NSRange range = [[request.URL absoluteString] rangeOfString:@"data/info"];
return NSNotFound != range.location;
}
+ (NSURLRequest *)canonicalRequestForRequest:(NSURLRequest *)request {
return request;
}
- (void)startLoading {
NSURLRequest *request = self.request;
NSLog(@"%@", request);
NSLog(@"Headers: %@", [request allHTTPHeaderFields]);
NSLog(@"Method: %@", [request HTTPMethod]);
NSLog(@"Body: %@", [request HTTPBody]);
}
- (void)stopLoading {}
@end
그런 다음 나는 응용 프로그램을 실행이 이후
는 Ajax 요청이 UIWebViewDelegate
방법에 의해 체포 할 수없는 문제 알려져있다, 나는 NSURLProtocol
의 아주 간단 자손을 만들어 내 컨트롤러의 -viewDidLoad
방법에 등록하기로 결정 "PUT을 통해 제출"버튼을 누르고 Xcode의 콘솔 로그에서 다음을 관찰하십시오.
2013-10-31 16:38:28.077 TestHTTPPUTiOS[1608:4a03] <NSURLRequest: 0x8942c20> { URL: file:///Users/oradyvanyuk/Library/Application%20Support/iPhone%20Simulator/7.0.3/Applications/90232D0E-3243-4517-A2B7-15A17371E117/TestHTTPPUTiOS.app/data/info/put }
2013-10-31 16:38:28.079 TestHTTPPUTiOS[1608:4a03] Headers: {
Accept = "text/plain, */*; q=0.01";
"Content-Type" = "text/plain; charset=utf-8";
Origin = "file://";
"X-Requested-With" = XMLHttpRequest;
}
2013-10-31 16:38:28.079 TestHTTPPUTiOS[1608:4a03] Method: PUT
2013-10-31 16:38:28.080 TestHTTPPUTiOS[1608:4a03] Body: (null)
위에서 볼 수 있듯이 HTTP 요청 본문은 비어 있습니다. 난 POST 메서드를 사용하여 시도하고 콘솔에서 Method: POST
의 유일한 차이와 정확히 같은 출력을 가지고.
GET 메서드를 사용할 때 비어있는 HTTP 본문도 표시되지만 실제로 양식의 putValue
문자열이 HTTP 요청의 URL에 도착하므로 이것이 예상됩니다.
이 문제에 대해 조언을 해 주시겠습니까? 아니면 제가 잘못했는지 말해 줄 수 있습니까? URL이 아니라 HTTP 본문 내용으로 전달 된 값을 얻어야합니다.
방금 제안한 내용을 시도했지만 제대로 작동하지 않습니다. "데이터"속성에 지정하는 것은 HTTP 본문으로 가야합니다. 그리고 "contentType"의 값이 무엇인지는 전혀 지정하지 않아도 상관 없습니다. – oradyvan
WebKit 구현에 버그가있는 것 같습니다. 이미 버그 리포트를 Apple의 bugtracker에 게시했으며 지금까지는 아직 Open 상태입니다. 문제가 곧 출시 될 iOS 버전에서 해결되기를 바랍니다. – oradyvan