我有一个关于NSUrlConnection和http会话的问题。我需要用POST打电话给httpS url。我试过这个代码:
NSString *bodyData = @"selectTipoVeicolo=A&inputTarga=EN784DC";
NSMutableURLRequest *postRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"https://www.theUrl.com"]];
[postRequest setValue:@"application/x-www-form-urlencoded charset=utf-8" forHTTPHeaderField:@"Content-Type"];
// Designate the request a POST request and specify its body data
[postRequest setHTTPMethod:@"POST"];
[postRequest setHTTPBody:[NSData dataWithBytes:[bodyData UTF8String] length:strlen([bodyData UTF8String])]];
NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:postRequest
delegate:self];
[connection start];但是我获得了一个包含以下消息的html页面:
你的会议已经超时了。Web应用程序存储有关您在服务器上正在执行的操作的信息。此信息称为会话。 Web服务器必须跟踪许多、多个会话。如果您不活动足够长的时间(通常是几分钟),此信息将被丢弃,以便为活动用户腾出空间。 此时,您可以重新启动会话以继续。
编辑
服务器响应:
<NSHTTPURLResponse: 0x8ad8400> { URL: theHost.com/http://voas.theHost.com:7777/… } { status code: 200, headers { "Cache-Control" = private; Connection = "Keep-Alive"; "Content-Length" = 2383; "Content-Type" = "text/html;charset=UTF-8"; Date = "Wed, 04 Dec 2013 21:21:52 GMT"; "Keep-Alive" = "timeout=50,max=9"; Server = "Oracle-Application-Server-10g/9.0.4.3.0 Oracle-HTTP-Server OracleAS-Web-Cache-10g/9.0.4.3.0 (N)"; "Set-Cookie" = "text cookie"; } }
我怎样才能避免这个问题?我需要什么?
发布于 2013-12-04 21:16:32
还可以通过捕获响应来检查服务器在标头中返回的内容:
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
_data = [[NSMutableData alloc] init];
_response = (NSHTTPURLResponse*) response;
}您可以在这里或在connectionDidFinishLoading中检查响应变量。这应该能给你一些关于缺失部分的线索。就目前情况而言,这可能是一个服务器问题,并且还不清楚客户端需要发送什么。
顺便说一句,不需要启动连接。init方法已经启动它。从医生那里:
返回初始化的URL连接,并开始加载URL请求的数据。
发布于 2013-12-04 21:32:16
至少有三个问题:一个错误、一个可能的改进和一个潜在的问题:
application/x-www-form-urlencoded MIME类型没有参数。(我想知道这是从哪里来的)
postRequest setValue:@“application/x form-urlencoded charset=utf-8”forHTTPHeaderField:@“Content”;
application/x-www-form-urlencoded MIME类型根本没有参数:不能指定字符集参数。如果,参数必须用分号;分隔。
所以,试着:
postRequest setValue:@“application/x form-urlencoded”forHTTPHeaderField:@“Content”;https://stackoverflow.com/questions/20385938
复制相似问题