问题标签 [asihttprequest]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
iphone - ASIHTTP 请求在日志中失败,但 requestFailed 没有被调用
我有
当我提出我的要求时
我在我的日志中得到这个:
2010-08-11 16:52:11.861 MyProject[11720:207] 请求完成下载数据 2010-08-11 16:52:11.861 MyProject[11720:207] 请求失败:(gdb)
但是我的日志声明
没有被调用。有任何想法吗?
干杯
iphone - ASIFormDataRequest-文件的 POST 继续在身份验证失败后似乎继续
我正在使用 ASIFormDataRequest 将一些数据发布到经过 http 身份验证的 url。
当身份验证失败并调用身份验证对话框委托时,上传进度似乎仍在完全进行。
所以在这些情况下:
1) 用户的凭据尚未存储在钥匙串中 2) 存储在钥匙串中的用户凭据未通过身份验证(过期等)
我看到这种行为:
- 我看到请求进入我的服务器,并且 401 denied 错误返回给客户端
- 不调用 uploadFailed 委托。
- 进度条代表缓慢填充,因为文件似乎仍在网络连接上推出。它在与完全上传的时间一致的时间内完成
- 出现内置身份验证对话框模式
- 用户输入正确的凭据
- 进度条委托重置
- 上传再次开始 - 进度条在服务器上接收到发布数据时填充
- 按预期调用完成的委托方法。
- 第二次尝试一切都上传得很好
这是我设置操作的地方:
我想我需要在身份验证失败时发出[请求取消],但我不确定我应该在哪里执行此操作。
即使在服务器返回 401 之后,POST 仍然会消失,这是预期的行为吗?
感谢任何指导或指向解决此问题的现有问题。
iphone - 将 NSOperation 添加到启动异步 ASIHTTPRequest 的 NSOperationQueue
因此,我尝试在后台线程上执行所有下载数据的 REST 调用,以便 UI 保持响应。
我有一个包含 NSOperationQueue 的视图控制器。我创建了一个导入器类的实例,它是 NSOperation 的子类。在我的导入器的 main() 方法中,我设置了一个 ASIHTTPDataRequest。我创建了请求,然后是启动请求的时候了。
问题:我通过在请求上调用“startAsynchronous”来启动请求时遇到了问题。委托回调永远不会被调用。它就像请求开始,下载它的数据,但从不调用委托回调方法。
我的解决方案:当我同步启动请求时,一切似乎都正常(即回调等)。这是正确的解决方案吗?
为什么同步调用有效,而异步调用无效?我正在模仿苹果“TopSongs”样本的进口商类。
iphone - ASIHTTPRequest 下载缓存问题 - 无法在缓存中保存/加载日期
我正在尝试使用 ASIHTTP ( http://allseeing-i.com/ASIHTTPRequest/How-to-use#using_a_download_cache ) 将数据保存到缓存中。我不确定我做错了什么,但似乎没有将数据存储到缓存中。以下代码的输出是这样的:
这是代码:
有人可以给我一些有关如何完成此操作的代码片段吗?
谢谢!
-------------------------------------------------- ---------------------
新代码修订:
这仅适用于 [request startSynchronous]; 如果我尝试异步方法,它不会调用此函数:
iphone - 多线程应用程序中 NSManagedObjectContext 的通用方法
我在这里阅读了许多关于 NSManagedObjectContext 和多线程应用程序的帖子。我还查看了 CoreDataBooks 示例以了解单独的线程如何需要它们自己的 NSManagedObjectContext,以及保存操作如何与主 NSManagedObjectContext 合并。我发现这个例子很好,但也太具体了。我试图概括这一点,并想知道我的方法是否合理。
我的方法是有一个通用函数来获取当前线程的 NSManagedObjectContext。该函数返回主线程的 NSManagedObjectContext,但如果从不同的线程中调用,它将创建一个新的(或从缓存中获取)。情况如下:
如果从主线程调用保存操作很简单。从其他线程调用的保存操作需要在主线程中合并。为此,我有一个通用commit
功能:
在contextDidSave:
函数中,如果被通知调用,我们将执行合并commit
。
最后,我们用这个清理 NSManagedObjectContext 的缓存:
这可以编译并且似乎可以工作,但我知道由于竞争条件,线程问题可能会很棘手。有人看到这种方法有问题吗?
此外,我在异步请求的上下文中使用它(使用 ASIHTTPRequest),它从服务器获取一些数据并更新并在 iPhone 上插入存储。请求完成后似乎 NSThreadWillExitNotification 不会触发,然后将同一线程用于后续请求。这意味着相同的 NSManagedObjectContext 用于同一线程上的不同请求。这是一个问题吗?
iphone - ASIHTTPRequest:尝试调用我的委托方法时出错
我有一个 ASINetworkQueue 实例,并将 ASIHTTPRequest 实例添加到队列中;同时,我为队列以及每个请求设置了委托方法:
在一个循环中,我向队列添加了请求,在循环之外添加了调用 [submittingReportQueue go]。
以下是我的委托方法:
但是 ASIHTTPRequest.m 在以下代码块中抛出异常:
[调用 setArgument:&data atIndex:3]; 抛出异常,错误消息是 'NSInvalidArgumentException',原因:'*** -[NSInvocation setArgument:atIndex:]: index (3) out of bounds [-1, 2]'
我做错了什么?
谢谢`
iphone - ASIHTTPRequest 异步的另一个委托?
如何创建一个只包含它自己的委托的新文件,以便我可以创建一个具有自己的异步结束的 ASIHTTPRequest,以及一些足够简单的东西,我只需要设置[request setDelegate:self];
为类似的东西[request setDelegate:AlternateDelegate];
,只需在文档的开头添加一个包含引用 AlternateDelegate 委托
iphone - 如何使用 ASIHTTPRequest 发送删除请求?
想知道如何使用 ASIHTTPRequest 发送 DELETE 而不是 POST/GET 等。谢谢!
iphone - iPhone上传图片速度建议
我有一个应用程序,允许您拍照,调整 jpeg 质量大小(10-100%),然后使用 ASIFormDataRequest(ASIHTTPRequest 实现的一部分)将其发送到服务器。这在网络连接上运行良好,但在蜂窝网络上,它似乎会在那里等待 5-10 分钟,试图传输图像发布数据,然后失败(即使质量为 10%)。
将此与 Twitter 和 Facebook 应用程序提供的图像上传(大约需要 30 秒到一分钟)进行比较,这并不完全理想。我想知道是否有人可以就如何加快数据传输或监控它给我任何建议,以便我可以准确地看到问题所在。
今晚我回到我的 Mac 笔记本电脑后,我将发布一段代码片段,说明我正在做什么,以防万一。
编辑:继承人的代码片段:
.. 代码注释是我在视图上粘贴“上传”图像的地方。我想我可以使调用同步而不是异步,你认为这可以提高性能吗?我把它留了下来,以防以后我想让用户在上传时做其他事情。
任何建议都会很棒:)
谢谢,
担
编辑:
杰西,感谢您的评论 - 我在 [request setUploadProcessDelegate:self] 中添加了所需的方法来监视正在发送的数据,并且一切似乎都可以发送。
JosephH - 我按照建议添加了“[ASIHTTPRequest setShouldThrottleBandwidthForWWAN:YES]”,还添加了“set_time_limit(0);” 进入 PHP 上传脚本(在超时的情况下),现在数据似乎正在通过蜂窝网络发送和检索,太棒了!我现在正在玩文件压缩等,以找到最佳质量的最佳文件。ATM 看起来 0.3 的质量相当不错,大约 30 秒左右即可传输,这正是我想要的!
我也错误地设置了压缩率,因为我使用的是 10-100 而不是 0.0-1.0,所以我也更正了这一点。
感谢您在解决我的问题方面的快速帮助!!
iphone - iPhone 中的下载队列
在 iPhone 中实现下载队列的最佳方法是什么?这可以用 ASIHTTPRequest 库来完成吗?