2014-10-27 65 views
0

我已經多次使用這個函數,並且通過了幾乎所有Q和A的這個問題。但是,我仍然無法正確發送POST請求到PHP。我使用目前的代碼是:PHP沒有收到來自java的POST請求

public static void main(String[] args){ 
      Map<String, String> m = new HashMap<String, String>(); 
      m.put("key", generateCode()); 
      try { 
      logData("http://example.com/data", m); 
     } catch (Exception e) { 
      System.out.println("There was an error"); 
     } 
     } 
     public static void logData(String url, Map<String, String> data) throws Exception { 
      URL siteUrl = new URL(url); 
      HttpURLConnection conn = (HttpURLConnection) siteUrl.openConnection(); 
      conn.setRequestMethod("POST"); 
      conn.setDoOutput(true); 
      conn.setDoInput(true); 

      DataOutputStream out = new DataOutputStream(conn.getOutputStream()); 

      Set keys = data.keySet(); 
      Iterator keyIter = keys.iterator(); 
      String content = ""; 
      for(int i=0; keyIter.hasNext(); i++) { 
       Object key = keyIter.next(); 
       if(i!=0) { 
        content += "&"; 
       } 
       content += key + "=" + URLEncoder.encode(data.get(key), "UTF-8"); 
      } 
      System.out.println(content); 
      out.writeBytes(content); 
      out.flush(); 
      out.close(); 
      BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream())); 
      String line = ""; 
      while((line=in.readLine())!=null) { 
       System.out.println(line); 
      } 
      in.close(); 
     } 

發送POST請求,我的PHP是:

<?php 
echo $_POST['key']; 

我總是用錯誤Notice: Undefined index: key in /var/www/html/data/index.php on line 2返回。

+0

是'關鍵'字面你的實際發佈關鍵名稱?嘗試打印'$ _POST'來驗證您的密鑰名稱 - >'<?php print_r($ _ POST); ?> – Sean 2014-10-27 02:33:13

+0

它返回一個空集 – 2014-10-27 02:53:19

+0

然後,這是一個java問題,我什麼都不知道,對不起。祝你好運。 – Sean 2014-10-27 02:57:54

回答

0

這是我的代碼和它工作正常,試試吧:

java代碼:

import java.io.*; 
import java.net.*; 
import java.nio.charset.StandardCharsets; 
import java.util.*; 

public class JavaPhpTest 
{ 
    public static void main(String[] hex) 
    { 
    try{ 
    URL url = new URL("http://sandstorm.xzn.ir//hex.php"); 
    URLConnection uc = url.openConnection(); 
    HttpURLConnection huc = (HttpURLConnection)uc; 

    String un = "un=hamid&pass=123456"; 
    byte[] data = un.getBytes(StandardCharsets.UTF_8); 

    huc.setRequestMethod("POST"); 
    huc.setDoInput(true); 
    huc.setDoOutput(true); 

    DataOutputStream osw = new DataOutputStream(huc.getOutputStream()); 
    osw.write(data); 
    osw.close(); 

    InputStreamReader isr = new InputStreamReader(huc.getInputStream()); 
    Scanner sc = new Scanner(isr).useDelimiter("\\A"); 
    System.out.println(sc.next()); 
    isr.close(); 

    }catch(Exception e){ 
     e.printStackTrace(); 
    } 
} 
} 

PHP代碼(在服務器上):

<?php 

$username = $_POST["un"]; 
$password = $_POST["pass"]; 

if($username == "hamid" && $password == "123456"){ 
    echo("you are right"); 
}else{ 
    echo("something is wrong"); 
} 

?>