在Postman里面测试没问题,但是OkHttp中请求回来的确实HTML代码
下面是Postman中的结果
上海发布的接口和交通卡公司的接口出来的结果都没问题
但是上海发布的接口打印出来的却是HTML代码交通卡公司的那个大部分情况下是不打印log,小部分情况显示超时
以下是代码
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_third, container, false);
        Button submitNumber = (Button) view.findViewById(R.id.submit_number);
        EditText editText = (EditText) view.findViewById(R.id.sptc_number);
//        获取输入的交通卡号码
        final String sptcNumber = editText.getText().toString();
        submitNumber.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                sendRequestWithOkHttp(sptcNumber);
            }
        });
        return view;
    }    public void sendRequestWithOkHttp(final String cardNumber) {
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    OkHttpClient client = new OkHttpClient();
                    RequestBody requestBody = new FormBody.Builder()
                            .add("cardno", cardNumber)
//                            .add("arg1", cardNumber)
                            .build();
                    Request request = new Request.Builder()
                            .url("https://shanghaicity.openservice.kankanews.com/public/traffic/Jtkapi")
//                            .url("http://www.sptcc.com/servlet/CardAmtServelet")
                            .removeHeader("User-Agent")
                            .addHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36 OPR/62.0.3331.116")
                            .post(requestBody)
                            .build();
                    Response response = client.newCall(request).execute();
                    String responseData = response.body().string();
//                    System.out.println(responseData);
                    Log.d(TAG, responseData);
//                    parseJSONWithJSONObject(responseData);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }).start();
    }

解决方案 »

  1.   

    对比一下postman的请求参数和你okhttp的请求参数
      

  2.   

    我看审查元素里面的显示的表单数据还有别人在ios上写的捷径,看到请求参数应该就cardno这一个,所以我postman里就传了这一个试了试,发现可行之后我24-27行也就传了cardno一个,但是他就返回了个404网页
      

  3.   

    地址肯定没问题的,参数的话表单数据还有别人在ios上写的捷径,只有cardno一项,就是只要传入交通卡号就可以了,所以我再24-27行传入的就是cardno,后来返回的那行注释网页点开来显示的是404 not found
      

  4.   

    我看审查元素里面的显示的表单数据还有别人在ios上写的捷径,看到请求参数应该就cardno这一个,所以我postman里就传了这一个试了试,发现可行之后我24-27行也就传了cardno一个,但是他就返回了个404网页postman的默认请求头跟okhttp默认的不一样,你要看看请求头的差异
      

  5.   

    我看审查元素里面的显示的表单数据还有别人在ios上写的捷径,看到请求参数应该就cardno这一个,所以我postman里就传了这一个试了试,发现可行之后我24-27行也就传了cardno一个,但是他就返回了个404网页postman的默认请求头跟okhttp默认的不一样,你要看看请求头的差异
    好的我看看