gpt4 book ai didi

ios - NSMutableURLRequest 设置 HttpBody 移除 Header Parameters

转载 作者:行者123 更新时间:2023-11-29 01:19:54 25 4
gpt4 key购买 nike

我试图在 Objective-C 的 POST 请求上传递两个不同的参数。

第一个参数应该放在 Header 上,另一个应该放在 Body 上。

NSDictionary *headerParams = [NSDictionary dictionaryWithObjectsAndKeys:
@"password", @"grant_type",
@"write", @"scope", nil];
NSDictionary *bodyParams = [NSDictionary dictionaryWithObjectsAndKeys:
username, @"username",
password, @"password", nil];
AFHTTPRequestSerializer *r = [AFHTTPRequestSerializer serializer];
NSError *error = nil;

NSData *requestBody = [NSKeyedArchiver archivedDataWithRootObject:bodyParams];

NSMutableURLRequest *request = [r requestWithMethod:@"POST" URLString:urlString parameters:headerParams error:&error];
[request setValue:[NSString stringWithFormat:@"application/json,application/x-www-form-urlencoded"] forHTTPHeaderField:@"Accept"];
[request setValue:[NSString stringWithFormat:@"application/x-www-form-urlencoded"] forHTTPHeaderField:@"ContentType"];
[request setHTTPBody: requestBody]; //--> If I comment this, the headerParams doesn't removed

如果我用这条语句调试上面的代码:

po [[NSString alloc] initWithData: request.HTTPBody encoding:4]

我得到了 nil。但是当我省略 [request setHTTPBody: requestBody]; 的部分时,我得到了 headerParams 的值。我想获得 headerParamsbodyParams 的值。怎么了?谢谢。

最佳答案

通过查看 documentation for AFHTTPRequestSerializer关于parameters参数:

parameters
The parameters to be either set as a query string for GET requests, or the request HTTP body.

您认为将进入请求 header 的字典实际上将进入其正文。代码最后一行的 setHTTPBody: 调用将覆盖该值。

如果您希望第一个 headerParams 字典转到请求 header ,您需要使用 setValue:forHTTPHeaderField:

关于ios - NSMutableURLRequest 设置 HttpBody 移除 Header Parameters,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34737087/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com