是否有可能取消NSURLConnection开始sendAsynchronousRequest:queue:completionHandler:?
为什么不sendAsynchronousRequest:queue:completionHandler:返回NSURLConnection它创建的对象以便我可以取消它?
nsurlconnection nsurlconnectiondelegate sendasynchronousrequest
对于noob问题很抱歉,但我正在尝试测试连接,但是我无法验证请求的返回,因为测试在完成处理程序有机会执行之前结束.说明:
-(void)testConnection
{
[[Conector sharedInstance] performAsynchronousRequestWithServerRequest:_srvRequest completionHandler:^(RequestAsynchronousStatus finishStatus, NSData *data) {
if (finishStatus == RequestAsynchronousOK){
_data = data;
NSLog(@"Data OK");
}
}];
XCTAssertNotNil(_data, @"Data was nil");
}
Run Code Online (Sandbox Code Playgroud)
当我尝试断言时,_data将始终为nil,因为还没有执行完成处理程序.有一种机制可以强制测试等待,直到我收到sendAsynchronousRequest:方法的响应.提前致谢.
Objective-C块总是在一个单独的线程中执行吗?
具体来说,我问的是NSURLConnection类的sendAsynchronousRequest:queue:completionHandler方法.这是场景:
主线程(第1个线程)调用sendAsynchronousRequest方法,在第二个线程上执行sendAsynchronousRequest,当方法完成时由NSOperationQueue管理并调用commpletionHandler,它执行哪个线程?第二个线程?又是第三个线程?还是第一个帖子?
谢谢!
multithreading block objective-c grand-central-dispatch sendasynchronousrequest
当我使用以下代码时,我有错误消息:
[NSURLConnection sendAsynchronousRequest:request queue:myQueue completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response;
NSLog(@"response status code: %ld, error status : %@", (long)[httpResponse statusCode], error.description);
if ((long)[httpResponse statusCode] >= 200 && (long)[httpResponse statusCode]< 400)
{
// do stuff
[self requestFunction]; //Web Service
}
}];
Run Code Online (Sandbox Code Playgroud)
错误消息:
2017-02-27 01:13:30.088641 RENAULT[210:12313] [MC] System group container for systemgroup.com.apple.configurationprofiles path is /private/var/containers/Shared/SystemGroup/systemgroup.com.apple.configurationprofiles
2017-02-27 01:13:30.090449 RENAULT[210:12313] [MC] Reading from public effective user settings.
Run Code Online (Sandbox Code Playgroud)
[self requestFunction]函数启动一个简单的请求:
NSMutableURLRequest* request = [[NSMutableURLRequest alloc] init];
NSString *url_string …Run Code Online (Sandbox Code Playgroud) xcode objective-c nsurlconnection ios sendasynchronousrequest
我是ios编程的新手,需要实现类似谷歌搜索框的东西,即自动填充文本字段.我的场景如下1.当用户在文本字段中键入时2.background调用webservice获取数据(请求数据=文本字段数据).
例如: - 如果用户在Web服务调用的文本字段请求数据中键入"abc"应为"abc",并且Web服务对此进行响应.现在下次用户输入"d"即textfield包含"abcd"服务响应时必须考虑附加文本.(类似谷歌搜索字段)3.web服务调用应该是异步的.4.response应显示在下拉列表中.
有可能在ios ??? 任何教程或示例将不胜感激.提前致谢.
web-services asynchronous-wcf-call ios sendasynchronousrequest
我试图以编程方式创建一个xls表.为了填写表格,我正在制作NSURLConnection100左右的倍数.现在,我的方法是:
完成100个连接平均需要14秒.有没有办法实现NSURLConnection以更快的方式获得响应?
直到昨天我遵循的基本方法如下:
声明属性:
@property (nonatomic,strong) NSURLConnection *getReportConnection;
@property (retain, nonatomic) NSMutableData *receivedData;
@property (nonatomic,strong) NSMutableArray *reportArray;
Run Code Online (Sandbox Code Playgroud)
在viewDidLoad以下位置初始化数组:
reportArray=[[NSMutableArray alloc]init];
Run Code Online (Sandbox Code Playgroud)
初始化NSURLConnection按钮操作:
/initialize url that is going to be fetched.
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"****/%@/crash_reasons",ID]];
//initialize a request from url
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request addValue:tokenReceived forHTTPHeaderField:@"**Token"];
[request setHTTPMethod:@"GET"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
//initialize a connection from request
self.getReportConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
Run Code Online (Sandbox Code Playgroud)
处理收到的数据:
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData*)data{
if …Run Code Online (Sandbox Code Playgroud) 我正在使用Dialogflow创建一个代理/机器人,它响应不同类型的用户查询,其中包含"我需要从HR获取地址证明的信件"等操作项.这需要机器人从公司的数据库中获取一些信息,并通过在人力资源提供的模板化字母文件中填充检索到的信息来生成文档/字母.执行此操作的逻辑已经写在python文件中.使用Webhooks完成数据库集成.
问题是,解释用户请求,打开数据库和检索所需信息的完整过程需要5秒以上,这恰好是Dialogflow代理的响应超时限制.我对此做了一些研究,发现我们不能增加这个限制,但我们可以通过异步调用保持会话存活.我无法找到提供答案的正确资源.
所以,我的问题是 -
我们可以在对话框流中进行异步调用吗?
如果是,那么我们如何通过json将异步数据发送到Dailogflow代理?
有没有其他方法可以解决这个5秒响应超时限制?
提前致谢!
asynchronous request-timed-out sendasynchronousrequest dialogflow-es
我正在尝试使用 Google 表格 API V4 从 Google 表格中获取数据。是否有可能知道是否有人保存了数据或在工作表上进行了更改?基于此,我想调用 api 以获取数据?更像是我试图让我的应用程序与谷歌表同步。只要有人更新数据,我的应用程序也会更新。我正在使用 Node.js。我怎么做?提前致谢
google-sheets node.js sendasynchronousrequest google-sheets-api
实际上,我现在使用JSON类来调用Web服务,但是现在我想使用NSURLConnection任何为我提供代码的Web服务来调用该Web服务。
请向我提供我必须导入的框架的详细信息。
先感谢您。
我正在尝试tableView:cellForRowAtIndexPath通过调用来设置图像
[self downloadImage:urlString andSetIntoCellImageView:cell]
Run Code Online (Sandbox Code Playgroud)
在downloadImage,它将调用NSURLConnection:sendAsynchronousRequest(仅限iOS 5及更高版本),并在完成块中,使用设置图像
cell.imageView.image = [UIImage imageWithData:data]; // data is downloaded data
Run Code Online (Sandbox Code Playgroud)
它是有效的,如果在tableView:cellForRowAtIndexPath,imageView填充虚拟占位符图像 - 我想知道如何刷新新图像,是否setNeedsDisplay重新绘制?但是,如果我没有设置占位符图像,那么新图像将根本不显示.我想知道可以使用什么机制来显示图像?
如果我使用
[cell.imageView setNeedsDisplay]
Run Code Online (Sandbox Code Playgroud)
要么
[cell setNeedsDisplay];
Run Code Online (Sandbox Code Playgroud)
在完成块中,它将无法工作,如果我使用
[self.table reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]
withRowAnimation:UITableViewRowAnimationAutomatic];
Run Code Online (Sandbox Code Playgroud)
在完成块中通过downloadImage接受indexPath,它将tableView:cellForRowAtIndexPath再次调用,并导致无限循环.因此,我似乎需要使用一些哈希表来记住图像是否已经在哈希表中:如果没有,则调用downloadImage,如果在哈希表中,只需使用它,那么就不会有无限循环.
但是有一种简单的方法可以让图像显示出来吗?设置占位符图像有效,但如果我们不这样做 - 占位符导致图像刷新的机制是什么?
ios ×5
objective-c ×5
iphone ×2
asynchronous ×1
block ×1
node.js ×1
uitableview ×1
web-services ×1
xcode ×1
xctest ×1