【问题标题】:Timestamp request with OkHttp使用 OkHttp 的时间戳请求
【发布时间】:2019-09-11 18:27:20
【问题描述】:

我正在尝试对时间戳服务器进行发布调用,但得到 500。这是我的代码:

        Security.addProvider(new BouncyCastleProvider());

        TimeStampRequestGenerator reqGen = new TimeStampRequestGenerator();
        reqGen.setCertReq(true);

        MessageDigest digest = MessageDigest.getInstance("SHA256");
        digest.update(myData);
        TimeStampRequest request = reqGen.generate(TSPAlgorithms.SHA256, digest.digest(), BigInteger.valueOf(100));

        MediaType type = MediaType.parse("application/ocsp-request");
        RequestBody requestBody = RequestBody.create(type, request.getEncoded());

        Request request = new Request.Builder()
                .url(myUrl)
                .post(requestBody)
                .addHeader("Content-type", "application/timestamp-query")
                .addHeader("Content-Transfer-Encoding", "binary")
                .addHeader("Authorization", Credentials.basic(myUser, myPass))
                .build();

        httpClient.newCall(request).enqueue(new Callback() {
            public void onFailure(Call call, IOException e) {
                Log.e(myTAG, "Error connecting to timestamp server");
            }

            public void onResponse(Call call, Response response) {
                Log.e(myTAG, "Success");
            }
        });

我知道标头、凭据和 url 都是正确的,但我不确定是否将 TimeStampRequest 正确添加到 OkHttp 请求中,或者即使 MediaType 是它应该的。有谁知道对不对?

注意:TimeStamp 类属于 spongycastle 库。

【问题讨论】:

    标签: java android okhttp spongycastle


    【解决方案1】:

    原来不正确的部分是MediaType,它必须是binary,服务器才能正确读取数据。代码更正:

    MediaType type = MediaType.parse("binary");
    

    【讨论】:

      猜你喜欢
      • 2016-07-13
      • 1970-01-01
      • 2019-07-14
      • 2020-06-21
      • 1970-01-01
      • 2015-12-20
      • 2017-12-21
      • 1970-01-01
      • 2017-09-03
      相关资源
      最近更新 更多