2009-02-10 33 views
16

Tôi đang mã hóa ứng dụng iPhone cần thực hiện các yêu cầu HTTP nhỏ tới Internet. Trong mạng LAN của chúng tôi, tất cả lưu lượng truy cập HTTP phải đi qua Squid.iPhone Simulator - đặt proxy HTTP

Trình mô phỏng rõ ràng có khả năng sử dụng proxy - vì công cụ Mobile Safari hoạt động. Tuy nhiên, làm thế nào để tôi có được/thiết lập các thiết lập proxy trong mã?

Một loạt tiêu đề được nhận xét cho trình mô phỏng. Ví dụ:

CFNetworkCopySystemProxySettings 

Trong CFProxySupport.h không có sẵn cho trình mô phỏng - chỉ cho thiết bị. Tôi đã thử mã hóa cứng như thế này:

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

Nhưng không có niềm vui.

Suy nghĩ?

Trả lời

4

Để tắt tính năng này. Dường như điều này được khắc phục trong SDK iOS4 - ngăn xếp mạng trên trình mô phỏng sẽ sử dụng proxy của Mac cho mọi cuộc gọi HTTP.

+5

Mỏ không phải. Bạn đã thử hay đó là điều bạn đã đọc trong tài liệu chưa? – vlad259

+0

sử dụng CFReadStreamRef và bạn sẽ biết .. nó không sử dụng proxy .. – knocker

4

Bạn có thể thử sử dụng Proxifier: http://www.proxifier.com/mac/ Nó cho phép bạn đặt proxy cho bất kỳ chương trình nào.

Không phải những gì bạn đã hỏi nhưng nó sẽ giải quyết được sự cố của bạn.

+0

Tôi không thể làm cho nó hoạt động cùng nhau. – Worker

6

Bạn có thể thử:
"System Preferences" -> "Network" -> Chọn thiết bị mạng của bạn -> "Advanced" -> "Proxy"

+3

Cài đặt này không khả dụng trong trình mô phỏng. – Jim

+0

Đây là các hướng dẫn OS X - trình mô phỏng sẽ sử dụng thiết lập proxy mạng từ máy Mac mà nó chạy. –

+0

gây phiền nhiễu, tôi không muốn proxy toàn bộ máy Mac của mình, chỉ là trình mô phỏng ... như tôi sẽ làm khi sử dụng điện thoại thử nghiệm – Anentropic

0

Các giả có lẽ là không có khả năng sử dụng một proxy. Nó đang sử dụng ngăn xếp mạng chuẩn do Mac OS X cung cấp và rằng là những gì đang sử dụng proxy.

Nếu hằng số được nhận xét trong khi sử dụng trình mô phỏng và bạn đã cố gắng mã hóa nó không may mắn, thì đây có thể là một trong rất nhiều thứ không giống nhau giữa trình giả lập và thiết bị, và bạn sẽ phải kiểm tra phần này của ứng dụng trên thiết bị.

1

Câu hỏi này hơi cũ, nhưng tôi nghĩ rằng tôi sẽ thêm các phát hiện của mình để tham khảo. Trong SDK iOS 4.x ít nhất, mã sau hoạt động trên cả trình mô phỏng và iPhone.

CFDictionaryRef systemProxyDict = CFNetworkCopySystemProxySettings(); 
CFReadStreamSetProperty(m_resultRef, kCFStreamPropertyHTTPProxy, systemProxyDict); 
+0

làm cách nào để khắc phục nếu proxy cần xác thực? – knocker

2

Có vẻ như XCode 4.0 (4A304a) đã phá vỡ điều này một lần nữa. Nếu tôi đặt ngăn xếp thành proxy http qua Burp, hoạt động tốt với mọi ứng dụng (Safari, v.v.) nhưng trình mô phỏng.

2

Chỉ cần khởi động lại trình mô phỏng iPhone.

cho điều này tôi sử dụng các thủ thuật sau đây

đi đến thiết lập >> General >> Khả năng tiếp cận >> chữ in đậm để bật >> xem bảng chọn mở và yêu cầu khởi động lại để làm cho nó có hiệu quả >> báo chí tiếp tục >> iPhone giả tại khởi động lại

pop-up yêu cầu tên người dùng và mật khẩu cho proxy ...

thử nghiệm trong ios 7.1 mô phỏng

+0

Không hoạt động với 8.1 – Caipivara

0

Chỉ cần đóng và mở lại sau khi áp dụng mô phỏng cấu hình.

Các vấn đề liên quan