4

这是我的代码。

- (void)loadData:(NSString *)url {
    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:url]];
    [[NSURLConnection alloc] initWithRequest:request delegate:self];
}

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
    NSLog(@"connection found---------");
}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
    NSLog(@"reciving data---------");
}

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
    NSLog(@"connection fail---------");
    [self.pddelegate connectionError];
}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
    NSLog(@"data posting done---------");
    [self.pddelegate dataPosted];
}

如果 url 变大并在日志中给出连接失败,则它不起作用。

喜欢

url=@".......order_details&admin=29&tableid=89&waiter_id=18&items=MzQ6MSwxMToxLDMzOjEsNjc6MSwzOToxLDY5OjEsNTY6MSw2ODoxLDg6MSw1NToxLDYyOjEsNzY6MSw0MToxLDIwOjEsNjE6MQ=="
4

3 回答 3

0

有关获取类型请求长度的信息,请参阅此 SO 帖子不同浏览器中 URL 的最大长度是多少?

发送大字符串使用 POST 类型请求而不是 GET 类型。

于 2013-05-23T05:55:03.980 回答
0

我们有两种发送数据的方法。1. GET 方法:仅用于固定长度或有限长度的字符串。2. POST 方法:用于在比较 get 方法时发送更多字符串。

我已经给出了使用 PostMethod 的示例。

NSString *post =[[NSString alloc] initWithFormat:@"%@",YourString];
NSURL *url=[NSURL URLWithString:*@"YourURL like www.google.com"*];
NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];
NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
[request setURL:url];
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue: @"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:postData];
request.timeoutInterval = 60;    
NSError *error = nil;
NSURLResponse *response;   
NSData *urlData=[NSURLConnection sendSynchronousRequest:request 

returningResponse:&response error:&error];
NSString *errStr = _stringEmpty;
@try { errStr = [error localizedDescription]; }@catch (NSException * exception){ }

如果发生任何错误,errStr 将显示错误。

于 2013-05-23T10:49:31.760 回答
0

过去,我在 iOS 中使用了一些长度约为 2000 个字符的 URL,没有问题。NSURL、NSURLRequest 和 NSURLConnection 都管理得很好。如果您的 URL 比这短,问题可能不是由于它的长度,而是与 URL 的构造方式有关。

于 2013-05-23T13:30:04.500 回答