使用Volley抛出400响应代码错误将JWS转换为JSON

时间:2017-07-23 09:02:54

标签: android json safetynet

我正在尝试使用谷歌的SafetyNet API。我已成功向Google服务器发送了请求并获得了JWS输出。为了将JWS解析为JSON,我将JWS令牌发送到google给出的URL。但由于某种原因,它显示出一些错误。

文档:here

我的排球代码:

public void decodeJWS(final String x){
        String URL =  "https://www.googleapis.com/androidcheck/v1/attestations/verify?key="+getResources().getString(R.string.APIKey);
        StringRequest sq = new StringRequest(Request.Method.POST, URL, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                result.setText(response);
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                result.setText(error.toString());
            }
        }){
            @Override
            public String getBodyContentType() {
                return "application/json";
            }


            @Override
            public Map<String, String> getHeaders() throws AuthFailureError {
                HashMap<String, String> headers = new HashMap<String, String>();
//                headers.put("signedAttestation",x);
                headers.put("Content-Type", "application/json; charset=utf-8");
                return headers;
            }

            @Override
            protected Map<String, String> getParams() throws AuthFailureError {
                HashMap<String,String> body = new HashMap<>();
                body.put("signedAttestation",x);
                return body;
            }
        };
        requestQueue.add(sq);
    }

错误消息显示com.android.volley.serverError

日志显示BasicNetwork.performRequest: Unexpected response code 400 for https://www.googleapis.com/androidcheck/v1/attestations/verify?key=MyKey

我尝试使用Postman发送相同的请求,但它给了我

{
  "isValidSignature": false
}

作为回应。我相信我已经在我的凌空代码中正确设置了所有标题和内容。那有什么错误吗?

编辑:

我更新了我的代码以使用JSONObjectRequest。当我使用它时,没有400错误代码,但它返回相同的东西Postman查询返回。

 {
      "isValidSignature": false
    }

我使用attestationResult调用从getJWSResult()获取签名,然后立即将其作为参数发送给该函数。为什么它显示它不是有效的签名。

0 个答案:

没有答案