2017-07-11 1 views
-1

java.net.URLConnectionを使用してカールリクエストを作成しようとしています。 しかし、 - verboseスイッチで実行した場合、コマンドの出力を解析する必要があります。URLConnectionを使用して--verboseスイッチでカールするJava

次のコードはcurl要求を意図したとおりに実行しますが、コマンドの詳細出力を得る方法を探しています。

private String readCommandOutput(String pattern) throws IOException { 
    BufferedInputStream bis = new BufferedInputStream(uc.getInputStream()); 
    ByteArrayOutputStream buf = new ByteArrayOutputStream(); 
    String charset = "utf-8"; 
    int result = bis.read(); 
    String output = ""; 
    String lineSeparator = System.getProperty("line.separator"); 
    while (result != -1) { 
     buf.write((byte) result); 
     output = buf.toString(charset); 
     if (!output.equals(lineSeparator)) { 
      String output_arr[] = output.split(lineSeparator); 
      String lastLine = output_arr[output_arr.length - 1]; 

      // check if this is the end of stream and the pattern is match 
      if (lastLine.endsWith(pattern) && bis.available() == 0) { 
       return output; 
      } 
     }   
     result = bis.read(); 
    } 
    return buf.toString(charset); 
} 

私はpatternを使用このコードは、コマンド仕上げてジョブを停止するようにする時期を決定する文字列です:

 String stringUrl = this.contUrl + "/auth?action=login"; 
     URL url = new URL(stringUrl); 
     URLConnection uc = url.openConnection(); 

     System.out.println(stringUrl); 
     System.out.println("Authorization: " + this.header); 

     uc.setRequestProperty("X-Requested-With", "Curl"); 
     uc.setRequestProperty("Authorization", this.header); 

     BufferedReader in = new BufferedReader(new InputStreamReader(uc.getInputStream())); 
     String result = ""; 
     String line;  
     while((line = in.readLine()) != null) { 
      result += line; 
     } 
+0

ご質問はありますか? --verboseスイッチとは何ですか? –

+0

'curl'はコマンドラインツールです。あなたは 'curl'を実行していません。あなたはJavaコードを実行していますので、" curl request "のようなものはありません。 'this.contUrl'の値が' http: 'で始まると仮定すると、あなたは" HTTPリクエスト "を作成しています。 Javaコードで '' --verbose'(https://curl.haxx.se/docs/manpage.html#-v)が '' curl''に似ているような出力を書きたい場合、それはあなた次第です['URLConnection'](https://docs.oracle.com/javase/8/docs/api/java/net/URLConnection.html#method.summary)のメソッドを呼び出すことでアクセス可能なリクエストと応答ヘッダを出力するコードを記述します。 )。 – Andreas

+1

@TuyenNguyen 'curl'マンページを参照してください:https://curl.haxx.se/docs/manpage.html#-v – Andreas

答えて

0

私は願って、このヘルプをコマンドラインからの出力を読み出す機能を持っていますストリームから読み込みます。私はあなたのプログラムの出力が何であるか分からず、私のコードを参考にして自分のものに合わせて修正することができます。

関連する問題