非非非非非非 2019-09-26 20:43 采纳率: 46.2%
浏览 3725

安卓HttpURLConnection通过POST连接服务器问题

先上代码,我估计是最简单的一个发起通信的请求了吧(然而萌新真的很懵)。

    public void sendRequestWithHttp(){
        new Thread(new Runnable() {
            HttpURLConnection httpURLConnection;
            JSONObject jsonObject=new JSONObject();
            @Override
            public void run() {
                try{
                    jsonObject.put("CarId",1);
                    URL url=new URL("http://192.168.1.108:8080/transportservice/type/jason/action/GetCarSpeed");
                    httpURLConnection=(HttpURLConnection) url.openConnection();
                    httpURLConnection.setDoOutput(true);
                    httpURLConnection.setDoInput(true);
                    httpURLConnection.setRequestMethod("POST");
                    httpURLConnection.setReadTimeout(8000);
                    httpURLConnection.setUseCaches(false);
                    DataOutputStream dataOutputStream=new DataOutputStream(httpURLConnection.getOutputStream());
                    String message=String.valueOf(jsonObject);
                    dataOutputStream.writeBytes(message);
                    dataOutputStream.flush();
                    dataOutputStream.close();

                    httpURLConnection.disconnect();
                }catch (Exception e){
                    e.printStackTrace();
                }
            }
        }).start();
    }

emmmm大佬们,我现在只想向服务器发送数据,只要发过去就好QwQ
然后无论我怎么点击发送按钮(上方代码放在按钮事件中),服务器都没有一丝丝的反应(url地址是没问题的,这个可以放心)。

Setting device_provisioned has moved from android.provider.Settings.Secure to android.provider.Settings.Global.

jank_removeInvalidNode all the node in jank list is out of time

(尤其是第二个,报的最多,我百度了好久也没明白什么意思)
(顺便问一下大佬,这个HttpURLConnection是从哪一步开始向服务器发起连接请求及数据的---比如OkHttp里面有一句

Request request=new Request.Builder().url("http://192.168.1.108:8080/transportservice/type/jason/action/GetCarSpeed").post(requestBody).build();

起这个作用的。

下面是修改后的代码,至于原因—大概就是不同的那一行出的问题吧

JSONObject jsonObject=new JSONObject();
jsonObject.put("CarId",1);
                    URL url=new URL("http://192.168.1.108:8080/transportservice/type/jason/action/GetCarSpeed");
                    httpURLConnection=(HttpURLConnection) url.openConnection();
                    httpURLConnection.setRequestProperty("Content-Type","application/json");
                    httpURLConnection.setRequestMethod("POST");
                    httpURLConnection.setDoInput(true);
                    httpURLConnection.setDoOutput(true);
                    httpURLConnection.setReadTimeout(500000);
                    httpURLConnection.setConnectTimeout(8000);
                    httpURLConnection.setUseCaches(false);
                    httpURLConnection.getOutputStream().write(String.valueOf(jsonObject).getBytes());
                    int code=httpURLConnection.getResponseCode();
                    httpURLConnection.disconnect();

总而言之,只修改了两个地方: 一个是读数据的时间,一个是发送数据的方式。

  • 写回答

3条回答 默认 最新

  • 玄尺 2019-09-27 09:05
    关注

    你需要确认下面几项才能确定哪里有问题:
    1、服务器启动,你需要使用postman或者curl命令测一下,是否能够正确返回结果
    2、把你这段代码放到一个java工程中跑一次,看看能不能通
    3、你的这段代码是否能够通过android触发得到

    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器