我正在创建一个iPhone应用程序,我需要将数据发送到服务器。使用NSURLConnection我能够发送数据但我的数据发送两次。我只得到一次回应。 任何人都可以建议为什么会发生这种情况
这是我的代码
NSURL *url=[NSURL URLWithString:[APIServiceURL geturl]];
NSMutableURLRequest *req=[NSMutableURLRequest requestWithURL:url];
NSString *msgLength=[NSString stringWithFormat:@"%d",[soapMsg1 length]];
[req addValue:@"text/xml" forHTTPHeaderField:@"Content-Type"];
[req addValue:msgLength forHTTPHeaderField:@"Content-Length"];
[req addValue:@"http://tempuri.org/InsertPostComment" forHTTPHeaderField:@"SOAPAction"];
[req setHTTPMethod:@"POST"];
[req setHTTPBody:[soapMsg1 dataUsingEncoding:NSUTF8StringEncoding]];
// Response
NSHTTPURLResponse *urlResponse=nil;
NSError *error;
connection =nil;
connection=[[NSURLConnection alloc]initWithRequest:req delegate:self];
NSData *responseData;
;
if (connection)
{
responseData=[NSURLConnection sendSynchronousRequest:req returningResponse:&urlResponse error:&error];
}
else
{
NSLog(@"not connected to server");
}
if ([responseData length]>0)
{
NSString *responseString=[[NSString alloc]initWithData:responseData encoding:NSUTF8StringEncoding];
NSLog(@"responseString %@",responseString);
responseString =nil;}
由于
答案 0 :(得分:2)
使用您的代码2发出请求。
创建NSURLConnection时会发送第一个。 [[NSURLConnection alloc] initWitRequest: delegate:]
创建连接并异步启动请求,将数据发送回您指定的委托。
,第二个是在你致电
时拍的[NSURLConnection sendSynchronousRequest:req returningResponse:&urlResponse error:&error];
如果要对端点进行同步调用:
NSData *responseData;
responseData=[NSURLConnection sendSynchronousRequest:req returningResponse:&urlResponse error:&error];
if (!error)
{
// Do your stuff with the response data
}
else
{
NSLog(@"not connected to server with error %@", error.debugDescription);
}
对URLConnection的一个很好的解读:Apple Reference
答案 1 :(得分:0)
使用NSUrlConnection委托取回两个响应。当且仅当您的服务器针对您发布的日期发送2个响应时,U才能获得2个响应。
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
NSString *response = [[NSString alloc] initWithBytes:[data bytes] length:[data length]
encoding:NSUTF8StringEncoding];
}
它应该有用。