2014-10-27 4 views
0

У меня это было много раз, и я прошел через почти все Q и A для этого вопроса. Тем не менее, я все еще не могу правильно отправить POST-запрос на PHP. Текущий код, я использую это:PHP, не получающий POST-запросы от java

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

отправить запрос на почту, и мой РНР:

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

Я всегда возвращается с ошибкой Notice: Undefined index: key in /var/www/html/data/index.php on line 2.

+0

Является ли ключ ' 'literal ваше фактическое название сообщения? Попробуйте распечатать '$ _POST', чтобы проверить свои имена ключей ->' ' – Sean

+0

Он возвращает пустой набор –

+0

Тогда это проблема с java, о которой я ничего не знаю, извините. Удачи. – Sean

ответ

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

?> 
Смежные вопросы