Необработанный ответ изображения / png ответа

Попробуйте использовать PrecessBuilder -

try{

   String prg = "import sys\nprint int(sys.argv[1])+int(sys.argv[2])\n";
   BufferedWriter out = new BufferedWriter(new FileWriter("test1.py"));
   out.write(prg);
   out.close();
   int number1 = 10;
   int number2 = 32;

   ProcessBuilder pb = new ProcessBuilder("python","test1.py",""+number1,""+number2);
   Process p = pb.start();

   BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
   int ret = new Integer(in.readLine()).intValue();
   System.out.println("value is : "+ret);
}catch(Exception e){System.out.println(e);}

Более подробно см. здесь .

0
задан Kaiido 16 January 2019 в 03:47
поделиться

1 ответ

После нескольких часов поиска в Google я наконец-то понял проблему: по сути, ответ на мой вызов REST на самом деле содержит тип [png] изображения png. Таким образом, чтобы правильно отобразить его, нам не нужно создавать base64 блоб, вместо этого он изначально поддерживается html5. Проблема, с которой я столкнулся, заключается в том, что этот blob не поддерживается ajax-вызовом jQuery, поэтому библиотеки более высокого уровня, такие как axios, также НЕ поддерживают его.

Для простоты, чтобы продемонстрировать, как это работает, я бы использовал jQuery:

<html lang="en">
<head>
  <meta charset="utf-8">
  <title>Blob image/png demo</title>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>

<form action="/" id="invokeBlob">
  <input type="submit" value="Invoke It!">
</form>
<!-- the result of the blob will be rendered inside this div -->
<div id="imgcontainer"></div>

<script>
  // Attach a submit handler to the form
  $( "#invokeBlob" ).submit(function( event ) {

    // Stop form from submitting normally
    event.preventDefault();

    var url = "https://YOUR-DOMAIN/charts";
    var xhr = new XMLHttpRequest();
    xhr.open('GET', url, true);
    xhr.responseType = "blob";

    xhr.setRequestHeader("Authorization", "Bearer XXX-YOUR-JWT-TOKEN")
    xhr.setRequestHeader("Accept", "image/png");
    xhr.onload = function() {
      if (this.status == 200) {
        var blob = this.response;
        var img = document.createElement("img");
        img.onload = function(e) {
          window.URL.revokeObjectURL(img.src);
        };
        img.src = window.URL.createObjectURL(blob);
        $("#imgcontainer").html(img);
      }
    }
    xhr.send();
  });
</script>

</body>
</html>

0
ответ дан imarchuang 16 January 2019 в 03:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: