1

我使用以下代码使用同步请求完成了 Web 服务,

NSURL * url=[NSURL URLWithString:"\\urlString"];
NSMutableURLRequest * request=[NSMutableURLRequest requestWithURL:url];
NSError * error;
NSURLResponse * response;
NSData *data=[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
NSLog(@"data is %@",data);
NSString * outputData=[[NSString alloc]initWithData:data encoding:NSASCIIStringEncoding];
                  NSLog(@"output is %@",outputData);

这很成功,给了我完美的输出,

现在我改成A同步,

NSURL * url=[NSURL URLWithString:"\\urlString"];
NSMutableURLRequest * request=[NSMutableURLRequest requestWithURL:url];
NSError *error;
NSURLResponse * response;
 output=[[NSString alloc]initWithData:responseData encoding:NSASCIIStringEncoding];
NSLog(@"Response : %@",output);


request.HTTPMethod = @"POST";

[request setValue:@"application/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"];

NSData *requestBodyData = [output dataUsingEncoding:NSUTF8StringEncoding];
request.HTTPBody = requestBodyData;

(void)[[NSURLConnection alloc] initWithRequest:request delegate:self];

然后代表,

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {

NSLog(@"response from connection %@",response);
 responseData = [[NSMutableData alloc] init];
}

- (void)connectionDidFinishDownloading:(NSURLConnection *)connection destinationURL:(NSURL *)destinationURL
{
NSLog(@"Stream finished.");
}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)outputData {
// Append the new data to the instance variable you declared
[responseData appendData:outputData];

output=[[NSString alloc]initWithData:responseData encoding:NSASCIIStringEncoding];

 NSLog(@"Response data is output %@",output);
}

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
NSLog(@"Error occured");
}

但是,这里没有调用 didReceiveData 方法。请给我一个线索

4

0 回答 0