- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我想编写一个 MobileSubstrate ( http://www.iphonedevwiki.net/index.php/MobileSubstrate) 插件,它接受每个 HTTP 请求并修改 URL。 (原因非常复杂,需要一段时间才能解释,所以请相信我,别无选择)。基本上,我需要知道什么是最好的 Objective-C 消息或 C 函数,我应该覆盖它们以拦截任何 HTTP 请求、修改 URL 并将请求发送回原始函数(这不应该只是发送的第一个请求通过一个应用程序,但也有任何重定向)。我认为它可能在 NSURL 或 CFNetwork 中,但不确定具体位置。此功能在替换后应该适用于任何应用程序和操作系统本身。
编辑:好的,这是我想做的两个示例场景,请注意,要覆盖的方法应该是从应用程序到操作系统的任何地方的任何 HTTP 请求调用的方法:
1) MobileSafari 中的用户在 aaa.com/a.html 中输入
2) aaa.com/a.html 重定向到 aaa.com/b.html
3) aaa.com/b.html 加载 bbb.com/c.png
我想更改请求,以便添加 ?i=j。
例如:将所有 aaa.com/a.html 更改为 aaa.com/a.html?i=j, aaa.com/b.html?i=j, bbb.com/c.png?i=j?
还有一个:
1) 用户使用 Maps.app
2) Google map 尝试加载 google.com/map1.png(我知道这不是实际图像)
将 google.com/map1.png 更改为 google.com/map1.png?i=j?
最佳答案
挂接以下方法并将请求替换为您已编辑的 mutableCopy
。
-[NSURLConnection sendWillSendRequest:redirectResponse:]
-[NSURLConnection initWithRequest:delegate:]
–[NSURLConnection initWithRequest:delegate:startImmediately:]
这不会重定向原始 TCP 套接字连接,只会重定向通过标准 API 汇集的 HTTP 请求。
注意:在这样做时要非常小心。在我看来,重定向所有 http 请求违反了用户信任
关于iphone - 使用 MobileSubstrate 修改 iPhoneOS 上的所有 HTTP 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2734120/
我有一个简单的 TCP 客户端,它连接到一个简单的 TCP 服务器,每 5 秒发送一次“ping”。我使用从标准 C 套接字库读取的命令读取这些“ping”。 int numberOfBytes =
我有一个应用程序需要缓存一些图像。 我已经阅读了一些有关缓存的文档,合乎逻辑的做法是将我的图像缓存在应用程序沙箱的 Library/Caches 目录中。 据我所知,在这里存储缓存图像的原因是: iT
我们已经没了Reiner Knizia 的钱几个月了。它是做得很好,所以我们一直在时间允许的情况下对其进行更新。然而,有一件事仍然困扰着我。我从来没能得到我的分层卡可以正确消除锯齿。 这是一个示例:
人们在 iPhone OS 上使用/做什么来创建照片滤镜或类似 photoshop 的效果?像黑白、棕褐色、交叉处理、“复古”等东西。我看到 ImageMagick 可能可以通过大量的 futzing
我正在编写一个 iPhone 应用程序,根据 Apple's recommendations 使用 I/O 音频单元同时录制和播放音频。 . 我想在播放录制的音频之前应用一些声音效果(混响等)。为了使
令我困惑的是,代码符号标识需要输入两个条目。我不确定这在 Xcode 3 中是否相同,但在 Xcode 4 中我看到(在build设置中)类似这样的内容: 在“Distribution”的projec
当我在以前的 Xcode 中构建应用程序时(我忘记了版本,4.earlysomething),该应用程序在“Release-iphoneos”文件夹中构建。现在,在新版本(4.5)中,它构建在“Deb
我正在为 iOS 开发一个 SDK,我在代码中添加了一些 assert() 来帮助我捕获错误。使用模拟器时它工作得很好,但如果我在设备上构建我的应用程序(调试-iphoneos),将其从我的 Mac
我最近不得不复制自己的框架,以便能够将它们与原生 watchOS 2 扩展链接,因为平台不同。因此,对于每个框架 X,我都有一个 X-watchos 对应物。 在模拟器中以及直接构建到我的设备时一切正
当我尝试在我的苹果机器上启动(EPT)iPhone应用程序时,其版本是。但我收到错误“错误:没有名称或路径为“iphoneos”的 SDK”,尽管我已从项目 ->编辑事件目标中选择了版本。任何人都可以
我试图从 subview Controller 调用 Root View Controller 中的方法,这样当我更改选项时,它们将自动更新 Root View ,这又会更新其他几个 View Con
我阅读了很多有关为 iOS 平台构建 live555 库的讨论。我成功地使用 ./genMakefiles iphone-simulator 为模拟器构建了 lib,然后使用 make,但无法为设备构
我很绝望:(我已经尝试了各种脚本,但没有一个有效。我的系统是带有 iOS-SDK v5.1 的 Lion (10.7.4) 上的 xCode4.3.2 使用脚本: #!/bin/sh # For iP
有人救救我吧。 这是我遇到的错误。我已经尝试过清理、清理构建、pod 安装和更新。我还没有找到解决方案。 Shell 脚本调用错误组/Users/arthuraraujo/Library/Develo
这可能有点挑剔,但在 iPad SplitViewController 设置中,有 2 个 View 。每个 View 都有一个非常小的黑色圆角。 (iPhone 应用程序可能也是如此)。 下图中可以
我正在尝试编译一个最初为 Cocoa 编写的库。一切都很好,直到它寻找函数 marg_setValue()。它说 char in 之前有语法错误 marg_setValue(argumentList,
xcodebuild 可以构建一个 sdk 设置为 iphoneos 或 iphonesimulator 但不能同时设置的项目,所以为了生成包含 armv7 arm64 和 i386 x86_64 架
正如标题所说,我想在文本中找到一个字符串,但是这个字符串很特殊。文本可能是这样的: { PREBINDING = NO; "PROVISIONING_PROFILE[sdk=iphoneos*]" =
我想编写一个 MobileSubstrate ( http://www.iphonedevwiki.net/index.php/MobileSubstrate) 插件,它接受每个 HTTP 请求并修改
我正在构建一个带有库的项目。我正在制作的版本是调试版本。该库将自身构建到以下目录中: LibraryPath/build/Debug-iphoneos 当我链接我的主项目时,我收到以下警告: 未找到
我是一名优秀的程序员,十分优秀!