2012-01-15 28 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リクエストを送信する「これは」として、私は出力に含まを取得します。だから、それはURLに接続していますが、データを送信している間はすべて機能していません。助けてください!ありがとうございました。

答えて

1

投稿と取得に異なるストリームを使用しています。 あなたのポストコードは正常に動作します。

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

BufferedReader in = new BufferedReader(new InputStreamReader(
      url.openStream())); // different stream 
をそして、それは正常に動作する必要があります:

を交換してください。ここでは任意の非推奨メソッドなし::

//編集

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

ああ!どうもありがとうございました !今はうまくいく。 Btw私が行うとき: in.readLine()メソッドは、DataOutputStreamで廃止され、元々使用していたBufferedReader行に置き換える必要があります。だからこの問題を解決する方法は? また、DataOutputStreamではなくbufferedReaderを使用してPOSTデータを送信する方法もあります。あなたの助けが大いにありがとう! :) – aradhya

+0

あなたは正しいです。私は廃止されたメソッドのないソリューションを追加しました。 BufferedReaderを使った投稿について:私はそれが可能だとは思わない(私は間違っている可能性がありますが、結局それはライターではなくReaderです) – tim

0

あなたは、JavaでGETを使用してデータを送信していることを明確に指定していますが、PHPではPOSTのデータを読み込んでいます。

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

あなたはそれらの1つを変更する必要があるので、それらの両方になりますPOSTまたはGETのいずれかを使用します。

+0

申し訳ありませんああ、私はGETでそれをしようとしていました。それはGETでもPOSTでもどちらでも動作しません。 – aradhya

関連する問題