2010-10-26 44 views
3

正如標題所說...我曾嘗試使用下面的代碼執行PHP腳本時用戶點擊一個按鈕,在我的Java Swing應用程序:如何從Java代碼調用PHP腳本?

URL url = new URL("http://www.mywebsite.com/my_script.php"); 
HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
conn.connect(); 

但沒有任何反應...... 有什麼錯了?

+0

這不完全是「從Java調用PHP」。這只是「發出HTTP請求」。該HTTP請求的另一端可能是PHP ...或者它可能是靜態內容,Ruby on Rails或更多的Java。從代碼的角度來看,它只是一個HTTP請求。所以Gareth Davis在下面是正確的......一旦你打開了這個HTTP連接,你必須調用另一個方法來發送你的HTTP請求並獲得一個HTTP響應。即使你不關心做出任何迴應,情況也是如此。 – 2010-10-26 12:27:43

+0

啊哈......得到了史蒂夫。 – Brad 2010-10-26 12:57:50

回答

5

我想你錯過了接下來的步驟是這樣的:

InputStream is = conn.getInputStream(); 

HttpURLConnection基本上只爲了做你需要做的是這樣調用getInputStream()或更好的東西打開插座上connectgetResponseCode()

URL url = new URL("http://google.com/"); 
HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
if(conn.getResponseCode() == HttpURLConnection.HTTP_OK){ 
    InputStream is = conn.getInputStream(); 
    // do something with the data here 
}else{ 
    InputStream err = conn.getErrorStream(); 
    // err may have useful information.. but could be null see javadocs for more information 
} 
+0

謝謝Gareth ...現在工作正常。我首先想到connect()會自動調用url並直接執行,因爲我使用的是HttpURLConnection而不是URLConnection。 – Brad 2010-10-26 12:33:38

+0

不用擔心。正如你可以從我的第二個例子看到的,connect()的調用實際上是可選的。說實話,如果你正在做其他最簡單的事情,你可能想考慮使用Apache的HttpClient – 2010-10-26 12:35:56

+0

嗨,我想問一下InputStream。爲什麼要運行php腳本我們需要InputStream而不是OutputStream? – aLIEz 2016-03-24 11:36:26

1
final URL url = new URL("http://domain.com/script.php"); 
final InputStream inputStream = new InputStreamReader(url); 
final BufferedReader reader = new BufferedReader(inputStream).openStream(); 

String line, response = ""; 

while ((line = reader.readLine()) != null) 
{ 
    response = response + "\r" + line; 
} 

reader.close(); 

「響應」,將持有的頁面的文本。你可能想玩弄回車(取決於操作系統,請嘗試\ n,\ r或兩者的組合)。

希望這會有所幫助。