2013-09-05 221 views
7

我有以下的捲曲請求任何人都可以跟我確認這將是subesquest HTTP請求轉換CURL請求HTTP請求的Java

 curl -u "Login-dummy:password-dummy" -H "X-Requested-With: Curl" "https://qualysapi.qualys.eu/api/2.0/fo/report/?action=list" -k 

會不會是像?

String url = "https://qualysapi.qualys.eu/api/2.0/fo/report/"; 
    URL obj = new URL(url); 
    HttpURLConnection con = (HttpURLConnection) obj.openConnection(); 

    // optional default is GET 
    con.setRequestMethod("GET"); ..... //incomplete 

任何人都可以幫助我將上面的curl請求完全轉換爲httpreq。

在此先感謝。

蘇維

回答

12

有許多方法來實現這一目標。下面的一個最簡單,我認爲,同意它不是很靈活,但工作。

import java.io.IOException; 
import java.io.InputStreamReader; 
import java.net.URL; 
import java.net.URLConnection; 

import org.apache.commons.codec.binary.Base64; 

public class HttpClient { 

    public static void main(String args[]) throws IOException { 
     String stringUrl = "https://qualysapi.qualys.eu/api/2.0/fo/report/?action=list"; 
     URL url = new URL(stringUrl); 
     URLConnection uc = url.openConnection(); 

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

     String userpass = "username" + ":" + "password"; 
     String basicAuth = "Basic " + new String(new Base64().encode(userpass.getBytes())); 
     uc.setRequestProperty("Authorization", basicAuth); 

     InputStreamReader inputStreamReader = new InputStreamReader(uc.getInputStream()); 
     // read this input 

    } 
} 
+0

你可以在這裏添加行家依賴於org.apache.commons.codec.binary.Base64: < - HTTPS:// mvnrepository的.com /僞影/公地編解碼器/公地編解碼器 - > 公地編解碼器 公地編解碼器 1.9 kishorer747

2

我不知道HttpURLConnection是否是你最好的朋友在這裏。我認爲Apache HttpClient是一個更好的選擇。

萬一你必須使用HttpURLConnection,你可以試試這個鏈接:

要設置用戶名/密碼,一個HTTP標頭的選項,而忽略SSL證書驗證。

HTH

-1

下面爲我工作:

Authenticator.setDefault(new MyAuthenticator("[email protected]","password")); 

------- 
public MyAuthenticator(String user, String passwd){ 
    username=user; 
    password=passwd; 
}