2016-04-01 2 views
1

В настоящее время я пишу приложение Java, которое дистанционно управляет моим Roku. Я нашел сайт this и использовал его для управления моим Року. Из инструментов разработчика Chromes я просмотрел его трафик данных и нашел запрос html, который контролировал Roku. Это был заголовок.Как воссоздать заголовок запроса html?

POST /keydown/Play HTTP/1.1 
Host: 192.xxx.x.82:8060 
Connection: keep-alive 
Content-Length: 0 
Cache-Control: max-age=0 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 
Origin: http://remoku.tv 
Upgrade-Insecure-Requests: 1 
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36 
Content-Type: application/x-www-form-urlencoded 
Referer: http://remoku.tv/ 
Accept-Encoding: gzip, deflate 
Accept-Language: en-US,en;q=0.8 

Затем я попытался воссоздать этот запрос POST в пределах Java, и это закончилось тем, что выглядели так:

HttpURLConnection urlConn; 
URL url = new URL("html://192.xxx.x.82:8060/keydown/Play"); 
urlConn = (HttpURLConnection) url.openConnection(); 

urlConn.setRequestProperty("Connection", "keep-alive"); 
urlConn.setRequestProperty("Content-Length", "0"); 
urlConn.setRequestProperty("Cache-Control", "max-age=0"); 
urlConn.setRequestProperty("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"); 
urlConn.setRequestProperty("Origin", "http://192.xxx.x.254"); 
urlConn.setRequestProperty("Upgrade-Insecure-Requests", "1"); 
urlConn.setRequestProperty("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36"); 
urlConn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 
urlConn.setRequestProperty("Referer", "http://192.xxx.x.254"); 
urlConn.setRequestProperty("Accept-Encoding", "gzip, deflate"); 
urlConn.setRequestProperty("Accept-Language", "en-US,en;q=0.8"); 

Я не 100% уверен, что это правильный путь, чтобы обновить запрос, потому что он не имеет такого же эффекта, как оригинал (рабочий). Однако это может быть связано с тем, что я изменил несколько мелких деталей, которые могут быть действительно важны. Поэтому мой вопрос к вам - если это правильный способ воссоздать запрос, и почему он не работает? Если не то, что есть? Любая помощь приветствуется.

+1

http compoents frm apache https://hc.apache.org/ – tgkprog

+0

Предпочтительно я хотел бы использовать предустановленные библиотеки и внешние банки. –

+0

Насколько я знаю, Java не имеет полной поддержки http. Но вы можете увидеть http://docs.oracle.com/javaee/7/api/javax/ws/rs/core/HttpHeaders.html – tgkprog

ответ

0

Благодаря комментарию tgkprog, я отредактировал мой код следующим образом:

HttpURLConnection urlConn; 
URL url = new URL("http://192.xxx.x.82:8060/keypress/Right"); 
urlConn = (HttpURLConnection) url.openConnection(); 
urlConn.setRequestMethod("POST"); 
urlConn.setDoOutput(true); 

try(DataOutputStream wr = new DataOutputStream(urlConn.getOutputStream())) { 
      wr.writeChars(""); 
} 

System.out.println(urlConn.getResponseCode()); 

и теперь он работает отлично, и я могу контролировать мою Roku проблемы была я не использовал правильные клавиши в заголовке, поскольку они не там, где в замках в Chrome (изменить: они не нужны).

+0

Вы просто отправляете запрос POST для нажатия кнопки. Вероятно, многие из тех заголовков, которые на самом деле не нужны –

+0

Наверное, но я новичок в HTTP и понятия не имею, что нужно, поэтому лучше быть в безопасности, чем сожалеть. –

+0

Вам просто нужно получить запрос к roku, так, например, это, вероятно, не волнует, что ваш пользовательский агент, или то, что для управления кешем установлено на –

Смежные вопросы