1

最后我得到了 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];
}

如果我删除 web 视图,屏幕上什么也不会发生。

以下是 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">

任何帮助表示赞赏:)

4

2 回答 2

1

您调用方法 [request startAsynchronous]; 这处理与主线程分开的请求,因此 [request responseString]; 当它在那里时仍然是空的。

你可以做两件事。[request 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 是一个很好的替代品。

于 2012-09-25T18:54:50.337 回答
0

您的代码看起来不错,但请确保您的网络服务使用Chrome Advanced Rest Client可以正常工作。

于 2015-11-18T06:31:30.973 回答