2012-01-15 98 views
0

我正在嘗試將POST數據從java發送到PHP頁面。但它不起作用。無論我在PHP頁面中迴應的工作正常,但是當我發送數據時,它給出 - '未定義索引' 可能是什麼問題? 這是我的java文件。用java發送數據到php頁面

import java.net.*; 
import java.io.*; 

class Main { 
public static void main(String args[]) throws IOException { 

    URL url = new URL("http://localhost/CD/user/test"); 
    String result = ""; 
    String data = "fName=" + URLEncoder.encode("Atli", "UTF-8"); 
    HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 
    try { 

     connection.setDoInput(true); 
     connection.setDoOutput(true); 
     connection.setUseCaches(false); 
     connection.setRequestMethod("POST"); 
     connection.setRequestProperty("Content-Type", 
       "application/x-www-form-urlencoded"); 

     // Send the POST data 
     DataOutputStream dataOut = new DataOutputStream(
       connection.getOutputStream()); 
     dataOut.writeBytes(data); 
     dataOut.flush(); 
     dataOut.close(); 

     BufferedReader in = new BufferedReader(new InputStreamReader(
       url.openStream())); 

     String g; 
     while ((g = in.readLine()) != null) { 
      result += g; 
     } 
     in.close(); 

    } finally { 
     connection.disconnect(); 
     System.out.println(result); 
    } 

} 
} 

這裏是我的PHP控制器:

public function test(){ 

    $test=$_POST['fName']; 
    $all="This is a "; 
    $all=$all." ".$test; 
    echo $all; 



} 

當我剛剛發送URL請求,我得到的輸出中爲「這是一個」。所以它連接到網址和所有內容,但發送數據時,它不起作用。請幫忙!謝謝。

回答

1

您正在使用不同的流進行發佈和獲取。 你的郵政編碼工作正常。

取代:

BufferedReader in = new BufferedReader(new InputStreamReader(
      url.openStream())); // different stream 

DataInputStream in = new DataInputStream (connection.getInputStream()); // same connection 

,它應該工作的罰款。

//編輯:這裏沒有任何不贊成的方法:

BufferedReader in = null; 
    try { 
     String line; 
     in = new BufferedReader(new InputStreamReader(connection.getInputStream())); 
     while ((line = in.readLine()) != null) { 
      result += line; 
     } 
    } finally { 
     if (in != null) { 
      in.close(); 
     } 
    } 
+0

哦!非常感謝你 !現在它工作正常。順便說一句,當我這樣做: in.readLine()它說,該方法已棄用DataOutputStream中,應替換爲我原來使用的BufferedReader線。那麼如何解決這個問題呢? 另外如何使用bufferedReader而不是DataOutputStream發送POST數據。非常感謝您的幫助 ! :) – aradhya 2012-01-15 12:43:05

+0

你說得對。我添加了一個沒有廢棄方法的解決方案。至於發佈使用BufferedReader:我不認爲這是可能的(我可能是錯的,但畢竟它是一個讀者,而不是一個作家) – tim 2012-01-15 12:58:00

0

您明確指出您使用Java中的GET發送數據,但您正在讀取的是PHP中的POST數據。

的Java(16):    connection.setRequestMethod("GET");
PHP(3):          $test=$_POST['fName'];

你需要改變其中的一個,所以他們都請使用POSTGET

+0

噢,對不起,我是用GET嘗試它。它不能以任何方式工作 - GET或POST。 – aradhya 2012-01-15 03:48:10

相關問題