我正在创建一个iPhone http客户端,通过POST(或GET)发送2个标头。
我的服务器收到7个标题
网络库增加了5个标题。
有没有办法从ios程序中访问添加的标题?
或
有没有办法取消此功能,并且没有为请求添加标题?
我已经可以用外部工具做到这一点
我只需要ios程序来记录发送的所有标题。
以下是所有丑陋的细节:
从我的iPhone发送请求的代码:
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setHTTPMethod:@"POST"];
[request setValue:@"BlahAgent" forHTTPHeaderField:@"User-Agent"];
[request setValue:@"keep-alive" forHTTPHeaderField:@"Connection"];
NSURLConnection *connection = [[NSURLConnection alloc]initWithRequest:request delegate:self];
NSLog(@"all headers %@",request.allHTTPHeaderFields);
打印到xcode控制台:
all headers {
Connection = "keep-alive";
"User-Agent" = "BlahAgent";
}
在接收端(php)我运行
$allHeaders = getallheaders();
print_r($allHeaders)
并获得:
Array
(
[Host] => 192.168.0.15
[Accept-Encoding] => gzip, deflate
[Accept] => */*
[Accept-Language] => en-us
[Connection] => keep-alive
[Content-Length] => 0
[User-Agent] => BlahAgent
)
我甚至做了一个钢丝鲨,并得到了:
POST /php/ajax.php HTTP/1.1
Host: 192.168.0.15
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en-us
Connection: keep-alive
Content-Length: 0
User-Agent: BlahAgent
我再次这样做但是使用GET并且没有标题并得到:
[Host] => 192.168.0.15
[Connection] => keep-alive
[Accept-Encoding] => gzip, deflate
[User-Agent] => Blah%20Agent/1.0 CFNetwork/672.0.8 Darwin/14.0.0
[Accept-Language] => en-us
[Accept] => */*
答案 0 :(得分:0)
当然,您可以尝试使用网络调试工具,例如:fiddler如果您在Windows上运行,或charles如果您有Mac。有了这些,您可以检查发送的任何请求的全部细节,因为他代表通过http发送的每个连接的代理。
编辑:另请注意,您未设置的其余标头由HTTP协议自动提供,因为它们在事务中是必需的。
答案 1 :(得分:0)
它看起来像我想要的无法完成
discussed here
您可以设置本地服务器向其发送请求并让它发送回完整请求,
但这就像Rube Goldburg-ish
或
你可以在没有魔法精灵为你做任何事情的情况下使用较低级别的图书馆。