2012-04-12 46 views
0

我想使用ASIHTTPRequest appendPostData方法将字符串数据发送到PHP服务器,但它不工作。ASIHTTPRequest appendPostData不工作

ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; 
[request appendPostData:[@"123456" dataUsingEncoding:NSUTF8StringEncoding]]; 
[request startAsynchronous]; 

我试图在请求本身进行一些修改,如:

[request setRequestMethod:@"POST"]; 
[request buildPostBody]; 

而且这不起作用。

当我使用

[request addPostValue:@"Ben" forKey:@"names"]; 

语法它的工作。

任何人有一个想法是什么错在这里?

回答

1

我通常使用这样的:

- (void)performPostRequestWithString:(NSString *)string stringDictionary:(NSDictionary *)stringDictionary dataDictionary:(NSDictionary *)dataDictionary delegate:(id)requestDelegate requestSelector:(SEL)requestSelector errorSelector:(SEL)errorSelector { 

    //localCopy = self; 

    self.delegate = requestDelegate; 
    self.callback = requestSelector; 
    self.errorCallback = errorSelector; 

    NSURL *url = [NSURL URLWithString:string]; 

    postRequest = [[ASIFormDataRequest alloc] initWithURL:url]; 
    [postRequest setDelegate:self]; 
    [postRequest setRequestMethod:@"POST"]; 

    if (stringDictionary) 
     for (NSString *key in [stringDictionary allKeys]) 
      [postRequest setPostValue:[stringDictionary objectForKey:key] forKey:key]; 

    if (dataDictionary) 
     for (NSString *key in [dataDictionary allKeys]) 
      [postRequest setData:[dataDictionary objectForKey:key] forKey:key]; 

    //NSLog(@"request url = %@", [postRequest.url absoluteString]); 
    [postRequest startAsynchronous]; 
} 

参数:

  • (NSString *)string - URL字符串,在这里发表您的请求;
  • (NSDictionary *)stringDictionary - 字典,其中包含所有的文本信息(如名称,ID等);
  • (NSDictionary *)dataDictionary - 字典,其中包含所有数据信息(如照片,文件等);
  • (id)requestDelegate - 代表执行下面的选择器;
  • (SEL)requestSelector - 选择器,将在成功请求时执行;
  • (SEL)errorSelector - 选择器,将在发生错误时执行。

P.S.选择器将用于ASIHTTPRequest Delegate执行

+0

谢谢你们! – user944351 2012-04-18 06:27:27