2014-10-01 2 views
1

Я уже много лет просматривал stackoverflow для ответов на мои вопросы, и это первый раз, когда я действительно задаю вопрос сам. Надеюсь, он не будет слишком расплывчатым.LUA.socket, HEADER

Прямо сейчас У меня возникли проблемы с пониманием того, почему мой код LUA не работает. Все, что я хочу сделать, это запросить соединение и загрузить html-файл с сайта. Вот код

local http = require("socket.http") 
local ltn12 = require("ltn12") 

local response = {} 
local body,code,headers,status = http.request({ 
    method = "GET", 
    url = "http://jisho.org/", 
    headers = { 
     jap = "", 
     eng = "hello", 
     dict = "edict" 
     }, 
    sink = ltn12.sink.table(response) 
    }) 
print(table.concat(response)) 

Это простой код, который должен перейти на веб-сайт словаря «jisho.org» и отправить заголовки, так что ищет английское слово «привет» и распечатать новые страницы HTML. Прямо сейчас я получаю только html для «jisho.org», а не html с сайта, который искал «привет».

Мне интересно, что я сделал неправильно?

+0

Быстрая попытка на самом веб-сайте, похоже, показывает, что это параметры URL, а не заголовки HTTP. Поэтому отправка их в качестве заголовков не сработает. Вам нужно вставить их в URL. –

ответ

0

При взгляде на сайт вам нужно использовать другой URL-адрес и включать параметры запроса в самом URL-адресе (как предложил Этан Рейснер); следующий код работает для меня:

local http = require("socket.http") 
local ltn12 = require("ltn12") 
local response = {} 
local body,code,headers,status = http.request({ 
    method = "GET", 
    url = "http://jisho.org/words?jap=&eng=hello&dict=edict", 
    sink = ltn12.sink.table(response), 
    }) 
print(table.concat(response)) 

я вернусь HTML с разделом «Найдено слов»:

<!-- Found words --> 
<div id="result"> 
    <div id="result_content"> 
...some HTML skipped... 
      <td class="meanings_column">ahoy; hullo; hello   </td> 

Вы можете разобрать возвращаемый HTML, чтобы извлечь любые значения вам нужно.