2010-04-29 23 views
1

我想編寫一個MobileSubstrate(http://www.iphonedevwiki.net/index.php/MobileSubstrate)插件,它可以接收每個HTTP請求並修改URL。 (原因很複雜,需要一段時間才能解釋,所以請相信我沒有其他選擇)。基本上,我需要知道什麼是最好的Objective-C消息或C函數,我應該覆蓋以攔截任何HTTP請求,修改URL並將請求發送回原始函數(這不應該只是第一個發送的請求由應用程序,但也包括任何重定向)。我認爲它可能在NSURL或CFNetwork中,但我不確定它究竟在哪裏。這個功能應該在更換後與任何應用程序和操作系統本身配合使用。使用MobileSubstrate修改iPhoneOS上的所有HTTP請求?

編輯: 好吧,這裏是什麼,我希望做兩分樣品的情況,注意方法重寫應該是一個由所有HTTP請求從應用程序到操作系統的任何地方稱爲:
1)用戶Mobile aafari類型aaa.com/a.html
2)aaa.com/a.html重定向到aaa.com/b.html
3)aaa.com/b.html加載bbb.com/c.png
我想改變請求,所以一切都有了?i = j加。
EX:將所有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.com/map1.png(而不是實際的圖像,我知道)
變化google.com/map1。 png到google.com/map1.png?i=j?

回答

1

掛鉤以下方法並用您編輯的mutableCopy替換請求。

  • -[NSURLConnection sendWillSendRequest:redirectResponse:]
  • -[NSURLConnection initWithRequest:delegate:]
  • –[NSURLConnection initWithRequest:delegate:startImmediately:]

這不會重定向原始TCP套接字連接,只有通過標準的API漏斗的HTTP請求。

注意:是非常謹慎的做這件事。重定向所有HTTP請求是違反用戶的信任在我看來

+0

好吧,這裏是一個示例場景:在MobileSafari類型 1)用戶在aaa.com/a.html 2)aaa.com/a.html重定向to aaa.com/b.html 3)aaa.com/b.html加載bbb.com/c.png 當我用我的代碼替換「 - [NSURLConnection sendWillSendRequest:redirectResponse:]」以將?i = j添加到所有html請求,它是否會將所有aaa.com/a.html更改爲aaa.com/a.html?i=j,aaa.com/b.html?i=j,bbb.com/c.png?i= J′ – Yifan 2010-04-29 11:21:21

+0

另一個: 1)用戶使用Maps.app 2)Google地圖嘗試加載google.com/map1.png(我不知道這是實際圖片) 替換該方法是否將google.com/map1.png更改爲google.com/map1.png?i=j? 此外,我正在撰寫的這個移動襯底插件僅供內部使用。 – Yifan 2010-04-29 11:23:39

+0

另外,感謝您的迴應。 – Yifan 2010-04-29 11:27:35