首页 > 解决方案 > 无法向 NSMutableRequest 添加标头

问题描述

NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:tempURL]] autorelease];
[request setValue:encryptedValue forHTTPHeaderField:@"EncString"];

我可以在请求中发现所有其他标头,但是缺少这个特定的标头,任何人都可以告诉我可能是什么原因。

标签: iosobjective-cnsmutableurlrequest

解决方案


我尝试了以下代码:

NSString *tempURL = @"https://stackoverflow.com/questions/50701101/unable-to-add-a-header-to-nsmutablerequest";
NSString *encryptedValue = @"whatever_that_has_no_special_characters_or_values_that_would_make_you_think_it_is_relevant_to_reproduce_this_issue";
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:tempURL]];    
[request setValue:encryptedValue forHTTPHeaderField:@"EncString"];
NSLog(@"%@", request.allHTTPHeaderFields);

输出是:

{
    EncString = "whatever_that_has_no_special_characters_or_values_that_would_make_you_think_it_is_relevant_to_reproduce_this_issue";
}

看起来不错。没有理由怀疑您提供的代码是造成该问题的原因。也许您应该检查以下一项:

  • 确实是encryptedValue要放入标题的有效对象(是字符串,不会太长,没有非常特殊的字符)
  • 您正在打印的对象真的是这个特定的请求吗(打印NSLog(@"%p", request);返回相同的结果)
  • 在这个对象的任何地方都没有一个牧民被移除(如果没有其他子类NSMutableURLRequest并覆盖相关方法以跟踪正在发生的事情)

如果这些工作都没有创建一个包含有关您所做工作的更多详细信息的帖子,那么您在哪里检查这些标题并且“可以发现所有其他标题”。


推荐阅读