2017-09-17 7 views
-3

http.post()リクエストを自分で行うことに問題があります。 LUA言語のESP8266に基づいてNodeMCUでAPIリクエストを実行したいとします。 私が最初に遭遇した問題は、「HTTPS上のプレーンHTTPアドレス」でした。 今のところ「悪いトークン」と言われています。つまり、彼は私のポストパラメータを受け取っていないということです。アドレスの後に?key = value&key = valueを指定して正しいHTTP Post要求を行うには

どのように正確にする必要がありますか?

http.post("http://www.2level.1level/api.php","Content-Type: text/plain","token=mytokenhere&arg1=argumentforrequest", 
    function(code, data) 
    if (code < 0) then 
    print("HTTP request failed") 
    else 
    print(code, data) 
    end 
end) 

通常、私はGMod Luaを使用してリクエストしています。

http.Post("https://www.2level.1level/api.php",{token=mytokenhere,arg1=argumentforrequest},function(txt) end,function(txt) end) 

http.Post on GMod Lua Wiki

================== 更新:コードは簡単に存在します。私は自分のコードを作った。

function ghttp.Post(url, parameters, onSuccess, onFailure, headers) 
    local add = "" 
    if parameters then 
     local temp = {} 
     for k,v in pairs(parameters) do 
       table.insert(temp,ghttp.encode(k).."="..ghttp.encode(v)) 
     end 
     add = "?"..table.concat(temp, "&") 
    end 
    http.post(url..add,"Content-Type: application/json\r\n"..(headers or ""),"",function(code, data) 
     if (code < 0) then 
      if onFailure then onFailure() end 
      else 
        if onSuccess then onSuccess(code,data) end 
      end 
    end) 
end 

しかし、今、私は新しい問題があります。 いくつかのAPIのリクエストHTTPSのみの接続を。

+0

コンテンツタイプはtext/plainではありません。 –

+0

これは解決済みとみなされますか? –

答えて

0

あなたは私たちに確認するURLを与えていませんでした(私が知っているので、トークンのために難しいでしょう)。だから、テストされていない正しいコードは次のようになります:

http.post('https://www.2level.1level/api.php', 
    'Content-Type: application/json\r\n', 
    '{token=mytokenhere,arg1=argumentforrequest}', 
    function(code, data) 
    if (code < 0) then 
     print("HTTP request failed") 
    else 
     print(code, data) 
    end 
    end) 

は、必ずあなたの{token=mytokenhere,arg1=argumentforrequest}は、例えばで確認することにより、有効なJSONであることを確認してくださいjsonlint.com。

HTTPSで問題が発生した場合は、https://github.com/nodemcu/nodemcu-firmware/issues/1707となります。

+0

解決策が機能しませんでした。 {"status": "NO"、 "message": "悪いトークン"} - サイトがargを受け取らなかったことを意味します。私は自分自身のコマンドを作ることによって問題を解決する – Spar

+0

"私自身のコマンドを作る" - それはどういう意味ですか?私のコードの正しさは、http://httpbin.org/postに対して実行することで簡単に確認できます。 –

+0

質問を更新します – Spar

関連する問題