Java agentOptions, эквивалентный Node - PullRequest
0 голосов
/ 18 октября 2019

Мне нужно «перевести» приведенный ниже код в Java-эквивалент. Это запрос, в котором вы отправляете pdf-файл на base64, и ответ будет тем же файлом на base64 со знаком.

Выполнено почти все, кроме части "agentOption".

const fs = require('fs');
const request = require('request');

let main_url = 'the url'
let mimeType = 'application/pdf'


function base64_encode(file) {
  var binary = fs.readFileSync(file);
  return new Buffer(binary).toString('base64');
}

var base64 = base64_encode('my_file.pdf'); // Arquivo a ser assinado.

const queryString = {
  numeroDocumento: '03771234560107',
  senha: '12349696',
  mimeType: mimeType,
  politicaAssinatura: '1'
}

const options = {
    method: 'POST',
    uri: main_url,
    qs: queryString,
    agentOptions: {
      // Utilizando crt e key:
      // cert: fs.readFileSync('certificados/cert.crt'),
      // key: fs.readFileSync('certificados/key.key')
      pfx: fs.readFileSync('certificados/meu_certificado.pfx'), // Caminho para o certificado
      passphrase: 'senhaCertificado123' // Senha certificado
   },
   form: {
     arquivo: base64
   }
};

function callback(error, response, body) {
  if (!error && response.statusCode == 200) {
      let fileName = "meu_arquivo_agora_assinado.pdf";

      fs.writeFile(fileName, body, 'base64', function(err) {
        console.log(err);
      });
    console.log("Concluído");
  }
}

request(options, callback);

Ява-код, который я сделал до сих пор. Без охттп тоже было бы неплохо:

OkHttpClient client = new OkHttpClient();

HttpUrl.Builder urlBuilder = HttpUrl.parse(host).newBuilder();
urlBuilder.addQueryParameter("numeroDocumento", "03771234560107");
urlBuilder.addQueryParameter("senha", password);
urlBuilder.addQueryParameter("mimeType", "application/pdf");
urlBuilder.addQueryParameter("politicaAssinatura", "1");
String url = urlBuilder.build().toString();

RequestBody body = new FormBody.Builder().add("arquivo", encodedString).build();
Map<String, Object> agentOptions = new HashMap<>();
agentOptions.put("pfx", new File(certName));
agentOptions.put("passphrase", password);

Request request = new Request.Builder()
        .url(url)
        .post(body)
        .header("Content-Length", String.valueOf(encodedString.length() + 8))
        .build();
Response response = client.newCall(request).execute();
String res = response.body().string();
if (response.code() == 200) {
    toFile(res);
} else {
    System.out.println(res);
}

Буду признателен за любые предложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...