aradhya
aradhya

Reputation: 355

Sending data to php page with java

I am trying to send the POST data from java to a PHP page. However it is not working. Whatever I echo in the php page works fine but when I send data it gives- 'undefined index' What could be the problem ? This is my java file.

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);
    }

}
}

And here is my php controller:

public function test(){

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



}  

When I just send a url request , I get the ouput as 'This is a'. So it is connecting to the url and everything but while sending data, it is not working. Please help! Thank you.

Upvotes: 1

Views: 7475

Answers (2)

tim
tim

Reputation: 2039

You are using different streams for posting and getting. Your post code works fine.

replace:

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

with

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

And it should work fine.

// edit: here without any deprecated methods:

    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();
        }
    }

Upvotes: 2

kba
kba

Reputation: 19466

You are clearly specifying that you're sending data using GET in Java, but you're reading POST data in PHP.

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

You will need to change one of them, so they both use either POST or GET.

Upvotes: 0

Related Questions