![](/img/trans.png)
[英]Authenticating and sending a request with Java.net 's Http functionality
[英]java.net How to fire an HTTP request
我使用java.net在我的Java客戶端發送HTTP請求,但我仍然無法實現/找到如何實際觸發請求。
例如,我有這個代碼:
Scanner sc = new Scanner(System.in);
System.out.println("Deleting subject...");
System.out.println("Subject shortcut (-1 for return):");
String shortcut = sc.next();
if( shortcut.equals("-1") )
return ;
try
{
URL url = new URL( "http://localhost:8080/Server/webresources/subject/delete/"+shortcut );
HttpURLConnection con = (HttpURLConnection)url.openConnection();
con.setDoOutput(true);
con.setRequestMethod("DELETE");
BufferedReader br = new BufferedReader( new InputStreamReader( con.getInputStream() ) );
System.out.println( br.readLine() );
}catch( Exception e )
{
System.out.println(e.getMessage());
}
在這段代碼中,如果我不使用這些行:
BufferedReader br = new BufferedReader( new InputStreamReader( con.getInputStream() ) );
System.out.println( br.readLine() );
請求永遠不會發送。 因此,在這種情況下,請求似乎是通過從連接調用InputStream來觸發的。
任何人都可以解釋我如何通過java.net觸發HTTP請求?
從文檔中,如果調用connect() ,或者如果調用依賴於連接的操作getInputStream()
如getInputStream()
) , HttpURLConnection
將連接。
如果尚未建立此類連接,則打開此URL引用的資源的通信鏈接 。 如果在已經打開連接時調用connect方法(由具有值true的連接字段指示),則忽略該調用。
URLConnection對象經歷兩個階段:首先創建它們,然后連接它們。 在創建之后,在連接之前,可以指定各種選項(例如,doInput和UseCaches)。 連接后,嘗試設置它們是錯誤的。 依賴於連接的操作 (如getContentLength) 將在必要時隱式執行連接 。
但是 ,有幾個主題表明connect()
不會提交實際請求,但getInputStream()
(很可能是讀取服務器響應的任何方法,例如getResponseCode()
)將:
每次調用此URL的協議處理程序的URLStreamHandler.openConnection(URL)方法時,都會創建一個新的URLConnection實例。
應該注意,URLConnection實例在創建時不建立實際的網絡連接。 只有在調用URLConnection.connect()時才會發生這種情況。 見javadoc
String url = "http://example.com";
URL obj = new URL(url);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
//add request header
con.setRequestProperty("User-Agent", USER_AGENT);
int responseCode = con.getResponseCode();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.