2012-09-10 48 views
0

我需要通过UITextField从我的应用程序提交值,并且我希望在我发送请求的网站上显示该值。我使用ASIHTTPRequest向网站发送请求。我想是这样的:如何发送POST值到网站?

NSURL *url = [NSURL URLWithString:@"http://www.project4hire.com/freelance_job_16265.html"]; 
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url]; 
[request setRequestMethod:@"POST"]; 
// 
[request setPostValue:priceField forKey:@"bid"]; 
[request setPostValue:dayField forKey:@"days2c"]; 
[request setPostValue:commentField forKey:@"comment"]; 
[request setPostValue:@"1" forKey:@"notify"]; 
[request setPostValue:@"placebid" forKey:@"Place Bid >>"]; 
[request setPostValue:@"e6fb12104854e6e9" forKey:@"suid"]; 
[request setPostValue:@"placebid" forKey:@"a"]; 
[request setPostValue:@"16265" forKey:@"pid"]; 

[request setDelegate:self]; 
[request setDidFailSelector:@selector(requestBidFailed:)]; 
[request setDidFinishSelector:@selector(requestBidFinished:)]; 
[request startAsynchronous]; 

} 
- (void)requestBidFailed:(ASIHTTPRequest *)request 
{ 
//notify user 
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"Error sending   request to the server" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
[alert show]; 

} 

- (void)requestBidFinished:(ASIHTTPRequest *)request 
{ 
NSLog(@"Status: %d", request.responseStatusCode); 
NSLog(@"string: %@",request.responseString); 
} 

这里是投标形式:BidForm 下面是请求和响应头:Header

我得到了响应200,但我就差没在网站上显示的值。任何人都可以指导我?

谢谢

+1

您可能还需要将代码发布到您的表单中。 – esqew

回答

0

我注意到您正在发布到HTML文件。除非你有一些特殊的设置来允许HTML文件是可执行的,否则html文件将不会处理你发布给它的数据。是只有一个值没有显示,或者是所有值都没有显示。如果所有的值都丢失了,那么我刚才说的是正确的,您将需要使用PHP,CF,Perl或任何您希望从您的应用发布的数据的语言。

+0

不一定:您可以将PHP代码嵌入到.html文件中。 – tamasgal

+0

所有的值都没有显示。为了您的注意,我想你告诉我,如果我创建自己的网站,但在我的情况下,这个网站不是我的。任何想法? – Kalvin

+0

@septi,默认情况下,大多数Web服务器都配置为不允许在.htm和.html文件上执行代码。但是,你可以改变你的Web服务器配置,这也是我所忽略的。 –

0

我有同样的问题,但我的模拟器工作,但它不是在设备上工作,然后我读了一篇文章,它显示了ASIHTTPRequest API的创始人不再更新他们的库(我不知道那篇文章是可靠与否),所以我决定使用RestKit的更新库。你可以从这个网站下载并安装它:restkit.org,如果你有任何安装问题可以请求我帮助你。这里是发布restkit库的简单代码:

- (void)post 
{ 
    [RKClient clientWithBaseURLString:@"http://www.project4hire.com"]; 

    NSDictionary* params = [NSDictionary dictionaryWithObjectsAndKeys: 
          priceField, @"bid", 
          dayField, @"days2c", nil]; 

    [[RKClient sharedClient] post:@"/freelance_job_16265.html" params:params delegate:self]; 
} 

- (void)objectLoader:(RKObjectLoader*)objectLoader didFailWithError:(NSError*)error { 
    NSRange range = [[error localizedDescription] rangeOfString:@"-1012"]; 
    if (range.length > 0){ 
     //Do whatever here to handle authentication failures 
     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"Error sending   request to the server" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
     [alert show]; 
    } 
    RKLogError(@"Hit error: %@", error); 
} 

- (void)request:(RKRequest*)request didLoadResponse:(RKResponse*)response 
{ 
    if ([request isGET]) { 
     // Handling GET /foo.xml 

     if ([response isOK]) { 
      // Success! Let's take a look at the data 
      NSLog(@"Retrieved XML: %@", [response bodyAsString]); 
     } 

    } else if ([request isPOST]) { 

     // Handling POST /other.json 
     if ([response isJSON]) { 
      NSLog(@"Got a JSON response back from our POST!"); 
     } 

    } else if ([request isDELETE]) { 

     // Handling DELETE /missing_resource.txt 
     if ([response isNotFound]) { 
      NSLog(@"The resource path '%@' was not found.", [request resourcePath]); 
     } 
    } 

    NSLog(@"HTTP status code:  %d", response.statusCode); 
    NSLog(@"HTTP status message: %@", [response localizedStatusCodeString]); 
    NSLog(@"Header fields: %@", response.allHeaderFields); 
    NSLog(@"Body: %@", response.bodyAsString); 
}