最后,我让ASI-xx的东西正常工作,这样我就不会出现ARC编译错误,也不会丢失任何其他东西。
现在,我想尝试使用ASIFormDataRequest,以便能够直接从应用程序登录到网站。
这是我已经得到的,但它似乎不能正常工作:
-(void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:YES];
NSString *str = @"http://mysite.com/ucp.php?module=login";
NSURL *url = [NSURL URLWithString:[str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
[request setPostValue:@"username" forKey:@"username"];
[request setPostValue:@"password" forKey:@"password"];
[request setTimeOutSeconds:120];
[request setDelegate:self];
[request startAsynchronous];
NSLog(@"%@",[request responseString]);
NSLog(@"%d",[request responseStatusCode]);
}
- (void)viewDidLoad
{
[super viewDidLoad];
UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 300)];
[webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://mysite.com"]]];
[self.view addSubview:webView];
}如果我移除webview,屏幕上什么也不会发生。
以下是NSLog的结果:
(null)
0我想要将数据发布到的(网站的)文本字段具有以下代码:
<input tabindex="1" name="username" id="username" size="25" value="" class="inputbox autowidth" type="text">
<input tabindex="2" name="password" id="password" size="25" value="" class="inputbox autowidth" type="text">感谢您提供的任何帮助:)
发布于 2012-09-26 02:54:50
您调用方法request startAsynchronous;这将在独立于主线程的情况下处理请求,因此当请求responseString;存在时,它仍然是空的。
你可以做两件事。请求startSynchronous,但这将导致您的UI停止。
最好的选择是:
- (void)requestFinished:(ASIHTTPRequest *)request
{
// Use when fetching text data
NSString *responseString = [request responseString];
}
- (void)requestFailed:(ASIHTTPRequest *)request
{
NSError *error = [request error];
}您已经设置了代理,所以这应该可以工作。
附注: ASIHTTPRequest是一个旧的框架,他们停止了为它开发。AFNetworking是一个很好的替代品。
发布于 2015-11-18 14:31:31
您的代码看起来没有问题,但请确保您的web服务使用Chrome Advanced Rest Client运行良好。
https://stackoverflow.com/questions/12586612
复制相似问题