在libGDX中发送POST请求

时间:2018-02-17 23:37:29

标签: java post networking libgdx

我如何使用libGDX发送POST请求,以便像我登录一样?

当我使用Postman使用IP向我的服务器发送POST请求时:8080 / login?email = EMAIL& password = 12345。它会在您登录后显示正确页面的HTML代码。但是当在libGDX中使用以下代码时,它为我提供了主登录页面。我已经尝试过使用带有和没有?的setContent。我尝试使用包含电子邮件和密码的Map,并使用HttpParametersUtils.convertHttpParameters()将其传递到setContent,但没有运气。

我还阅读了一篇关于发送带有Java的POST请求的帖子,要求您在传递参数之前先打开连接。但如果是这种情况,我不知道如何使用libGDXs网络方法。

这是我现在所拥有的。

 String URL = "http://IP:8080/login";
    Net.HttpRequest httpPOST = new Net.HttpRequest(Net.HttpMethods.POST);
    httpPOST.setUrl(URL);
    httpPOST.setContent("?email=EMAIL&password=12345");

    Gdx.net.sendHttpRequest(httpPOST, new Net.HttpResponseListener() {
                @Override
                public void handleHttpResponse(Net.HttpResponse httpResponse) {
                    Gdx.app.log("MSG", httpResponse.getResultAsString());
                }

                @Override
                public void failed(Throwable t) {
                    Gdx.app.log("LOGIN", "was NOT successful!");
                }

                @Override
                public void cancelled() {
                    Gdx.app.log("LOGIN", "was cancelled!");
                }
    });

1 个答案:

答案 0 :(得分:1)

您的内容的构建就像您正在发送GET请求而不是POST一样。 最简单的方法就是改变 Net.HttpMethods.POSTNet.HttpMethods.GET。 然后,您仍然在URL中向服务器发送数据。如果要通过http正文发送,则必须使用POST。但是随后您必须通过删除问号(“?”)来删除GET语法。

关于POST和GET之间的区别的一个好资源是:https://www.w3schools.com/tags/ref_httpmethods.asp