2012-09-10 3 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); 
} 

은 다음과 같습니다 : 나는 이런 식으로 뭔가를 시도 Header

내가 응답 (200)을 가지고,하지만 난 웹 사이트에 표시되지 보낸 값 : 여기 BidForm 요청 및 응답 헤더입니다. 누구든지 내게 조언 해 줄 수 있니?

감사합니다.

+1

아마 코드를 양식에 게시해야 할 것입니다. – esqew

답변

0

나는 당신이 HTML 파일에 게시하는 것으로 나타났습니다. HTML 파일을 실행 가능하게하는 특별한 설정이없는 한 html 파일은 사용자가 게시 한 데이터를 처리하지 않습니다. 하나의 값만 표시되지 않거나 모든 값이 표시되지 않습니까? 모든 값이 누락 된 경우 처음에 설명한 내용이 정확하며 PHP, CF, Perl 또는 응용 프로그램에서 게시하는 데이터를 수신하려는 언어를 사용해야합니다.

+0

반드시 그렇지는 않습니다. PHP 코드를 .html 파일에 중첩시킬 수 있습니다. – tamasgal

+0

모든 값이 표시되지 않습니다. 귀하의 주목을 위해, 나는 내 자신의 웹 사이트를 만들 경우에 당신이 말해 줄 생각하지만 내 경우에는이 웹 사이트는 내 것이 아닙니다. 어떤 생각? – Kalvin

+0

@septi, 대부분의 웹 서버는 기본적으로 .htm 및 .html 파일에서 코드 실행을 허용하지 않도록 구성됩니다. 하지만 당신은 확실히 당신도 내가 도망 가고 있었는지 귀하의 웹 서버 구성에서 변경할 수 있습니다. –

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); 
} 
관련 문제