问题标签 [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.

0 投票
2 回答
803 浏览

iphone - ASIHTTP 请求在日志中失败,但 requestFailed 没有被调用

我有

当我提出我的要求时

我在我的日志中得到这个:

2010-08-11 16:52:11.861 MyProject[11720:207] 请求完成下载数据 2010-08-11 16:52:11.861 MyProject[11720:207] 请求失败:(gdb)

但是我的日志声明

没有被调用。有任何想法吗?

干杯

0 投票
2 回答
1590 浏览

iphone - ASIFormDataRequest-文件的 POST 继续在身份验证失败后似乎继续

我正在使用 ASIFormDataRequest 将一些数据发布到经过 http 身份验证的 url。

当身份验证失败并调用身份验证对话框委托时,上传进度似乎仍在完全进行。

所以在这些情况下:

1) 用户的凭据尚未存储在钥匙串中 2) 存储在钥匙串中的用户凭据未通过身份验证(过期等)

我看到这种行为:

  • 我看到请求进入我的服务器,并且 401 denied 错误返回给客户端
  • 不调用 uploadFailed 委托。
  • 进度条代表缓慢填充,因为文件似乎仍在网络连接上推出。它在与完全上传的时间一致的时间内完成
  • 出现内置身份验证对话框模式
  • 用户输入正确的凭据
  • 进度条委托重置
  • 上传再次开始 - 进度条在服务器上接收到发布数据时填充
  • 按预期调用完成的委托方法。
  • 第二次尝试一切都上传得很好

这是我设置操作的地方:

我想我需要在身份验证失败时发出[请求取消],但我不确定我应该在哪里执行此操作。

即使在服务器返回 401 之后,POST 仍然会消失,这是预期的行为吗?

感谢任何指导或指向解决此问题的现有问题。

0 投票
2 回答
3280 浏览

iphone - 将 NSOperation 添加到启动异步 ASIHTTPRequest 的 NSOperationQueue

因此,我尝试在后台线程上执行所有下载数据的 REST 调用,以便 UI 保持响应。

我有一个包含 NSOperationQueue 的视图控制器。我创建了一个导入器类的实例,它是 NSOperation 的子类。在我的导入器的 main() 方法中,我设置了一个 ASIHTTPDataRequest。我创建了请求,然后是启动请求的时候了。

问题:我通过在请求上调用“startAsynchronous”来启动请求时遇到了问题。委托回调永远不会被调用。它就像请求开始,下载它的数据,但从不调用委托回调方法。

我的解决方案:当我同步启动请求时,一切似乎都正常(即回调等)。这是正确的解决方案吗?

为什么同步调用有效,而异步调用无效?我正在模仿苹果“TopSongs”样本的进口商类。

0 投票
2 回答
5605 浏览

iphone - ASIHTTPRequest 下载缓存问题 - 无法在缓存中保存/加载日期

我正在尝试使用 ASIHTTP ( http://allseeing-i.com/ASIHTTPRequest/How-to-use#using_a_download_cache ) 将数据保存到缓存中。我不确定我做错了什么,但似乎没有将数据存储到缓存中。以下代码的输出是这样的:

这是代码:

有人可以给我一些有关如何完成此操作的代码片段吗?

谢谢!

-------------------------------------------------- ---------------------

新代码修订:

这仅适用于 [request startSynchronous]; 如果我尝试异步方法,它不会调用此函数:

0 投票
2 回答
11658 浏览

iphone - 多线程应用程序中 NSManagedObjectContext 的通用方法

我在这里阅读了许多关于 NSManagedObjectContext 和多线程应用程序的帖子。我还查看了 CoreDataBooks 示例以了解单独的线程如何需要它们自己的 NSManagedObjectContext,以及保存操作如何与主 NSManagedObjectContext 合并。我发现这个例子很好,但也太具体了。我试图概括这一点,并想知道我的方法是否合理。

我的方法是有一个通用函数来获取当前线程的 NSManagedObjectContext。该函数返回主线程的 NSManagedObjectContext,但如果从不同的线程中调用,它将创建一个新的(或从缓存中获取)。情况如下:

如果从主线程调用保存操作很简单。从其他线程调用的保存操作需要在主线程中合并。为此,我有一个通用commit功能:

contextDidSave:函数中,如果被通知调用,我们将执行合并commit

最后,我们用这个清理 NSManagedObjectContext 的缓存:

这可以编译并且似乎可以工作,但我知道由于竞争条件,线程问题可能会很棘手。有人看到这种方法有问题吗?

此外,我在异步请求的上下文中使用它(使用 ASIHTTPRequest),它从服务器获取一些数据并更新并在 iPhone 上插入存储。请求完成后似乎 NSThreadWillExitNotification 不会触发,然后将同一线程用于后续请求。这意味着相同的 NSManagedObjectContext 用于同一线程上的不同请求。这是一个问题吗?

0 投票
1 回答
1403 浏览

iphone - ASIHTTPRequest:尝试调用我的委托方法时出错

我有一个 ASINetworkQueue 实例,并将 ASIHTTPRequest 实例添加到队列中;同时,我为队列以及每个请求设置了委托方法:

在一个循环中,我向队列添加了请求,在循环之外添加了调用 [submittingReportQueue go]。

以下是我的委托方法:

但是 ASIHTTPRequest.m 在以下代码块中抛出异常:

[调用 setArgument:&data atIndex:3]; 抛出异常,错误消息是 'NSInvalidArgumentException',原因:'*** -[NSInvocation setArgument:atIndex:]: index (3) out of bounds [-1, 2]'

我做错了什么?

谢谢`

0 投票
2 回答
1795 浏览

iphone - ASIHTTPRequest 异步的另一个委托?

如何创建一个只包含它自己的委托的新文件,以便我可以创建一个具有自己的异步结束的 ASIHTTPRequest,以及一些足够简单的东西,我只需要设置[request setDelegate:self];为类似的东西[request setDelegate:AlternateDelegate];,只需在文档的开头添加一个包含引用 AlternateDelegate 委托

0 投票
1 回答
1216 浏览

iphone - 如何使用 ASIHTTPRequest 发送删除请求?

想知道如何使用 ASIHTTPRequest 发送 DELETE 而不是 POST/GET 等。谢谢!

0 投票
1 回答
1663 浏览

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,所以我也更正了这一点。

感谢您在解决我的问题方面的快速帮助!!

0 投票
2 回答
2097 浏览

iphone - iPhone 中的下载队列

在 iPhone 中实现下载队列的最佳方法是什么?这可以用 ASIHTTPRequest 库来完成吗?