-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;
}
ご質問はありますか? --verboseスイッチとは何ですか? –
'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
@TuyenNguyen 'curl'マンページを参照してください:https://curl.haxx.se/docs/manpage.html#-v – Andreas