web-dev-qa-db-ja.com

iPhoneシミュレータ-HTTPプロキシを設定

インターネットに小さなHTTPリクエストを送信する必要があるiPhoneアプリをコーディングしています。企業LAN内では、すべてのHTTPトラフィックがSquidを通過する必要があります。

Mobile Safariが機能するため、シミュレータは明らかにプロキシを使用できます。しかし、コードでプロキシ設定を取得/設定するにはどうすればよいですか?

シミュレータ用に多数のヘッダーがコメント化されています。例えば、

CFNetworkCopySystemProxySettings

CFProxySupport.hでは、シミュレーターでは使用できません。デバイスでのみ使用できます。私はこのようなハードコーディングを試みました:

CFReadStreamSetProperty(stream, kCFProxyHostNameKey, @"internal.proxy.servername");
CFReadStreamSetProperty(stream, kCFProxyPortNumberKey, [NSNumber numberWithInt:80]);
CFReadStreamSetProperty(stream, kCFProxyTypeKey, kCFProxyTypeHTTP);

しかし、喜びはありません。

考え?

17
Dan Bennett

これを閉じるには。これはiOS4SDKで修正されているようです。シミュレーターのネットワークスタックは、HTTP呼び出しにMacのプロキシを使用します。

5
Dan Bennett

あなたが試すことができます:
「システム環境設定」->「ネットワーク」->ネットワークデバイスを選択->「詳細」->「プロキシ」

6

プロキシを使用してみることができます: http://www.proxifier.com/mac/ これにより、任意のプログラムにプロキシを設定できます。

あなたが尋ねたことではありませんが、それはあなたの問題を解決するはずです。

4

XCode 4.0(4A304a)がこれを再び壊したようです。 Burpを介してhttp呼び出しをプロキシするようにスタックを設定すると、シミュレーター以外のすべてのアプリ(Safariなど)で正常に動作します。

2
John

IPhoneシミュレータを再起動するだけです。

このために私は次のトリックを使用します

設定に移動>>一般>>アクセシビリティ>>スイッチを入れる太字>>ピッカービューを開き、再起動を要求して有効にする>>続行を押す>> iPhoneシミュレーターを再起動する

ポップアップは、プロキシのユーザー名とパスワードを要求します。

iOSシミュレーター7.1でテスト済み

2
g212gs

この質問は少し古いですが、参考のために私の調査結果を追加すると思いました。少なくともiOS4.x SDKでは、次のコードはシミュレーターとiPhoneの両方で機能します。

CFDictionaryRef systemProxyDict = CFNetworkCopySystemProxySettings();
CFReadStreamSetProperty(m_resultRef, kCFStreamPropertyHTTPProxy, systemProxyDict);
1
Kevin Campbell

シミュレータはおそらくプロキシを使用できません。 Mac OS Xが提供する標準のネットワークスタックを使用しており、thatがプロキシを使用しています。

シミュレーターの使用中に定数がコメント化されていて、運が悪かったのでハードコーディングしようとした場合、これはおそらくシミュレーターとデバイス間で同じではない多くのことの1つであり、次のようになります。アプリケーションのこの部分をデバイスでテストします。

0
Steve Madsen

構成を適用した後、シミュレーターを閉じて再度開きます。

0
Kvant