dongnachuang6635
2012-01-15 02:58
浏览 38
已采纳

使用java将数据发送到php页面

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.

图片转代码服务由CSDN问答提供 功能建议

我正在尝试将POST数据从java发送到PHP页面。 但它不起作用。 无论我在php页面中回应什么都可以正常工作但是当我发送数据时它会给出'未定义的索引' 这可能是什么问题? 这是我的java文件。

  import  java.net。*; 
import java.io。*; 
 
class Main {
public static void main(String args [])抛出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(); 
尝试{
 
 connection.setDoInput(true); 
 connection.setDoOutput(true); 
 connection.setUseCaches(false); 
 connection.setRequestMethod(“POST”);  
 connection.setRequestProperty(“Content-Type”,
“application / x-www-form-urlencoded”); 
 
 //发送POST数据
 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 =“这是一个”; 
 $ all = $ all。“。$。test; 
 echo $ all; \  n 
 
 
} 
   
 
 

当我发送网址请求时,我将输出视为“这是一个”。 所以它连接到url和一切,但在发送数据时,它不起作用。 请帮忙! 谢谢。

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • dsfdfd1211 2012-01-15 09:06
    已采纳

    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();
            }
        }
    
    打赏 评论
  • duanqianmou4661 2012-01-15 03:09

    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.

    打赏 评论

相关推荐 更多相似问题