У меня есть прокси-сервер browsermob, работающий на порту 9091. Я пытаюсь использовать API-интерфейс browsererob-proxy REST для установки настраиваемого заголовка. Когда я делаю запрос к моему приложению, используя Selenium через прокси-сервер, я не вижу заголовок, напечатанный в консоли приложений. Ниже мой код. Орган запроса основан на документации here. Мое требование - использовать прокси-сервер BrowserMob, а не его библиотеку Java для этого конкретного случая использования. Все, что я делаю неправильно в коде ниже?Настройка пользовательского заголовка с помощью BrowserMob-Proxy REST api
Proxy proxy = new java.net.Proxy(java.net.Proxy.Type.HTTP, new InetSocketAddress("localhost", 9091));
String bpmUrl = "http://localhost:8787/proxy/9091/interceptor/request";
Client client = Client.create();
String requestBody = "request.getMethod().addHeader(\"custom-header\", \"Bananabot/1.0\");";
WebResource resource = client.resource(bpmUrl);
resource.type(MediaType.TEXT_PLAIN_TYPE).post(requestBody);
String url = "http://localhost:8004";
DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setCapability(CapabilityType.PROXY, proxy);
WebDriver driver = new FirefoxDriver(capabilities);
driver.get(url);
driver.quit();
Edit 1
Я пытался @ решения ERKI, которые я думаю, что должно работать, но это не так. Что-то здесь отсутствует?
String bpmUrl = "http://localhost:8787/proxy/9091/headers";
Map<String,String> data = new HashMap<String, String>();
data.put("user-agent","Bananabot");
ClientConfig cc = new DefaultClientConfig();
cc.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING, Boolean.TRUE);
Client client = Client.create(cc);
WebResource resource = client.resource(bpmUrl);
resource.type(MediaType.APPLICATION_JSON).accept(MediaType.APPLICATION_JSON).post(ClientResponse.class, data);
Edit 2 Найден ответ, я попытался Java API, он работал и заметил, что браузер использует прокси-сервер, как ожидалось. С моим кодом выше, очевидно, браузер не использовал прокси. Поэтому вместо использования java.net.Proxy
я использовал org.openqa.selenium.Proxy
, который работал. Таким образом, единственное изменение кода, в котором я нуждался, это то, как я инициализирую прокси-сервер, остальная часть этого же. Теперь это прекрасно.
String PROXY = "localhost:9091";
Proxy proxy = new Proxy();
proxy.setHttpProxy(PROXY);
+1, я думаю, что вы правы. Я попробовал POST, упомянутый выше, но он все еще не работает. Я обновил мою попытку. Благодаря! – nilesh