Reputation: 355
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
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
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