mirror of
https://github.com/zhigang1992/RestKit.git
synced 2026-04-24 04:46:01 +08:00
Do not add headers for params if the request is a GET or a HEAD. refs #303
This commit is contained in:
@@ -133,8 +133,11 @@
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
- (BOOL)shouldSendParams {
|
||||
return (_params && (_method != RKRequestMethodGET && _method != RKRequestMethodHEAD));
|
||||
}
|
||||
- (void)setRequestBody {
|
||||
if (_params && (_method != RKRequestMethodGET && _method != RKRequestMethodHEAD)) {
|
||||
if ([self shouldSendParams]) {
|
||||
// Prefer the use of a stream over a raw body
|
||||
if ([_params respondsToSelector:@selector(HTTPBodyStream)]) {
|
||||
// NOTE: This causes the stream to be retained. For RKParams, this will
|
||||
@@ -168,7 +171,7 @@
|
||||
[_URLRequest setValue:[_additionalHTTPHeaders valueForKey:header] forHTTPHeaderField:header];
|
||||
}
|
||||
|
||||
if (_params != nil) {
|
||||
if ([self shouldSendParams]) {
|
||||
// Temporarily support older RKRequestSerializable implementations
|
||||
if ([_params respondsToSelector:@selector(HTTPHeaderValueForContentType)]) {
|
||||
[_URLRequest setValue:[_params HTTPHeaderValueForContentType] forHTTPHeaderField:@"Content-Type"];
|
||||
|
||||
@@ -611,4 +611,29 @@
|
||||
assertThatBool([loader.response isOK], is(equalToBool(YES)));
|
||||
}
|
||||
|
||||
- (void)itShouldNotAddANonZeroContentLengthHeaderIfParamsIsSetAndThisIsAGETRequest {
|
||||
RKClient* client = RKSpecNewClient();
|
||||
client.disableCertificateValidation = YES;
|
||||
NSURL* URL = [NSURL URLWithString:@"https://blakewatters.com/"];
|
||||
RKSpecResponseLoader* loader = [RKSpecResponseLoader responseLoader];
|
||||
RKRequest* request = [RKRequest requestWithURL:URL delegate:loader];
|
||||
request.params = [NSDictionary dictionaryWithObject:@"foo" forKey:@"bar"];
|
||||
[request send];
|
||||
[loader waitForResponse];
|
||||
assertThat([request.URLRequest valueForHTTPHeaderField:@"Content-Length"], is(equalTo(@"0")));
|
||||
}
|
||||
|
||||
- (void)itShouldNotAddANonZeroContentLengthHeaderIfParamsIsSetAndThisIsAHEADRequest {
|
||||
RKClient* client = RKSpecNewClient();
|
||||
client.disableCertificateValidation = YES;
|
||||
NSURL* URL = [NSURL URLWithString:@"https://blakewatters.com/"];
|
||||
RKSpecResponseLoader* loader = [RKSpecResponseLoader responseLoader];
|
||||
RKRequest* request = [RKRequest requestWithURL:URL delegate:loader];
|
||||
request.method = RKRequestMethodHEAD;
|
||||
request.params = [NSDictionary dictionaryWithObject:@"foo" forKey:@"bar"];
|
||||
[request send];
|
||||
[loader waitForResponse];
|
||||
assertThat([request.URLRequest valueForHTTPHeaderField:@"Content-Length"], is(equalTo(@"0")));
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
Reference in New Issue
Block a user