2011-06-29 34 views
1

我完全陌生的java,php等...所以請原諒我愚蠢的問題。php服務器 - java客戶端 - 發佈和回聲

我想編寫一個從Java客戶端應用程序接收名稱的PHP服務器應用程序。它應該響應在輸出上打印名稱併發送狀態消息(寫入失敗/成功)。

如何讓Java客戶端發送名稱並從PHP程序接收回復,以及PHP程序如何接收並打印名稱併發送回復?我搜索了很多:我發現了幾個代碼示例,但腳本仍然不起作用。

試圖使它的工作,我寫了以下內容:

服務器端

<html> 
     <head> 
      <title>PHP Giulio</title> 
     </head> 
     <body> 
      <?php 
$username = "Giulio";     
echo "$username"; 
$username = $_POST['username']; 
print "$username"; 
      ?> 
     </body> 
    </html> 
這樣,我想

,之前服務器已經從客戶端「朱利奧」接受了命名被打印,而在收到後,收到的名稱將被打印。

另一方面

客戶端

import java.io.InputStream; 
import java.io.OutputStreamWriter; 
import java.net.*; 

public class JavaPHP { 
    public static void main(String[] args){ 
     URL url; 
     try { 
      url = new URL("http://www.mydomain.com/myfile.php"); 
      URLConnection connection = url.openConnection(); 
      connection.setDoOutput(true); 
      OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream()); 
      out.write("username=NameToBeWritten"); 
      out.flush(); 
      out.close(); 
      InputStream in=connection.getInputStream(); 
      in.read(); 
      in.close(); 
     } catch (Exception e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     }  
    } 
} 

好...我獲得在輸出我看到的只是名朱利奧。 如何讓它接收並打印發送的名稱?

請幫我

在此先感謝。

Giulio !!

+0

請勿將HTML用於您的響應輸出。這不是必需的。讓PHP輸出一些JSON,xml甚至純文本。僅僅因爲你使用HTTP來通信php <-> java並不意味着你必須使用html。 –

回答

0

您需要將請求方法從Java設置爲POST。您可以通過鑄造connectionHttpURLConnection做到這一點,就可以調用setRequestMethod("POST")

HttpURLConnection urlCon = (HttpURLConnection) connection; 
urlCon.setRequestMethod("POST"); 

添加它,你打電話之前setDoOutput

+0

嗯這是我所做的,但它仍然無法正常工作: – gabellissimo

0

URL參數需要一個問號字符才能成功解釋您的請求。

嘗試更換

out.write("username=NameToBeWritten"); 

out.write("?username=NameToBeWritten"); 

,看看是否能解決問題,你也可能需要打開輸入流,因爲你會立即打開輸入前增加睡眠流來接收數據,並且服務器可能沒有完成將輸出刷新到客戶端ode ......只是一個念頭。

我知道這個問題很老,但讓我們知道你是否有任何成功。