2012-01-15 4 views
0

java에서 PHP 페이지로 POST 데이터를 보내려고합니다. 그러나 그것은 작동하지 않습니다. 내가 PHP 페이지에서 에코가 잘 작동하지만 데이터를 보낼 때 'undefined index'가 나온다 무엇이 문제 일 수 있는가? 이것은 내 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는 컨트롤러 : 난 그냥 URL 요청을 보낼 때 '이것은이다'로

public function test(){ 

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



} 

, 나는 OUPUT를 얻을. 그래서 그것은 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

오! 고마워요! 지금은 잘 작동합니다. Btw 내가 할 때 : in.readLine() 메소드는 DataOutputStream에서 더 이상 사용되지 않으므로 이전에 사용한 BufferedReader 행으로 대체해야한다고 설명합니다. 그렇다면이 문제를 어떻게 해결할 수 있을까요? 또한 DataOutputStream 대신 bufferedReader를 사용하여 POST 데이터를 보내는 방법. 귀하의 도움을 많이 주시면 감사하겠습니다! :) – aradhya

+0

당신 말이 맞아요. 나는 더 이상 사용되지 않는 방법을 사용하지 않고 솔루션을 추가했습니다. BufferedReader를 사용하여 게시물에 관해서 : 나는 그게 가능하다고 생각하지 않습니다 (내가 틀릴 수도 있지만, 결국 리더가 아닌 작가) – tim

0

자바에서 GET을 사용하여 데이터를 전송한다는 것은 분명하지만, PHP에서는 POST 데이터를 읽는 중입니다.

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

당신은 그들 중 하나를 변경해야하므로 것 둘 다 POST 또는 GET을 사용하십시오.

+0

죄송합니다 아, GET 그것을 시도하고 있었다. GET 또는 POST 중 어느 쪽이든 작동하지 않습니다. – aradhya

관련 문제