安卓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();

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

Incrular
非非非非非非 算了,还是放到问题中吧
大约一年之前 回复
Incrular
非非非非非非 回复非非非非非非: JSONObject jsonObject=new JSONObject(); jsonObject.put("CarId",1); URL url=new URL("http://192.168.1.1088080/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();
大约一年之前 回复
Incrular
非非非非非非 我在网上又找了些资料,然后对原有的代码进行了一些修改,以下是修改后的新线程中的代码:
大约一年之前 回复

3个回答

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

1.用postman测试一下服务器是否正常
2.Android默认的httpURLConnection在6.0被删掉了,你需要在网上找一个Apache的jar
3.做为开发怎么能不看日志呢,这种问题基本上看日志就解决了:https://blog.csdn.net/weimingjue/article/details/87921494

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问