Как отправить данные из проекта libgdx в сеть? - PullRequest
0 голосов
/ 20 апреля 2020

Я бы хотел поработать над переносом данных json из libgdx на мой веб-сервер, но я не уверен, как это сделать. Приведенный ниже метод был создан со ссылкой на документацию libgdx.

private void httpPostJson(){
    final Json json = new Json();
    final String requestJson = json.toJson(requestObject);
    Net.HttpRequest request = new Net.HttpRequest("POST");
    final String url = "http://localhost:8080/data";
    request.setUrl(url);
    request.setContent(requestJson);

    request.setHeader("Content-Type", "application/json");

    Gdx.net.sendHttpRequest(request, new Net.HttpResponseListener() {
        @Override
        public void handleHttpResponse(Net.HttpResponse httpResponse) {
            String responseJson = httpResponse.getResultAsString();
            Gson gson = new Gson();
            data = gson.fromJson(responseJson, Person.class);
            //'Person' is just sample class. data is class Person's object.
            data.StoreData("",1);//successed to receive json data from web server.
            //StoreData is just getter method.
        }

        @Override
        public void failed(Throwable t) {
            Gdx.app.log("failed!");
        }

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

Можно получать данные, передаваемые с веб-сервера. Но этот метод не может отправлять данные на веб-сервер. Подскажите, как перенести данные из проекта libgdx на веб-сервер?

Ответы [ 2 ]

0 голосов
/ 23 апреля 2020

Мы используем следующий код (поскольку у вас больше контроля над запросом, а не с помощью gdx. net), он работает как шарм, просто не выполняйте его в главном потоке - тело - ваш JSON as String

        URL url = new URL(<your url>);
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setRequestMethod("POST");
        conn.setDoInput(true);
        conn.setDoOutput(true);
        conn.setRequestProperty("Accept", "application/json");
        conn.setRequestProperty("Content-Type",
                "application/json; charset=utf-8"); 
        if (body != null) {
            OutputStream os = conn.getOutputStream();
            BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(
                    os, "UTF-8"));
            writer.write(body);
            writer.close();
            os.close();
        }
        conn.connect();
        String s = stringFromStream(conn.getInputStream(), 4096);

Метод stringFromStream:

    public static String stringFromStream(final InputStream is,
                                      final int bufferSize) {
    final char[] buffer = new char[bufferSize];
    final StringBuilder out = new StringBuilder();

    try {
        final Reader in = new InputStreamReader(is, "UTF-8");
        try {
            for (; ; ) {
                int rsz = in.read(buffer, 0, buffer.length);
                if (rsz < 0)
                    break;
                out.append(buffer, 0, rsz);
            }
        } finally {
            in.close();
        }
    } catch (Exception ex) {

    }
    return out.toString();
}
0 голосов
/ 23 апреля 2020

Это данные, передаваемые на веб-сервер:

final String requestJson = json.toJson(requestObject);
...