2016-11-12 2 views
0

Java-кода вставки необработанных данных в test.php, но он работает только с LOCALHOST URL, и не с открытым IPHttpURLConnection только исходные данные в локальном хосте

Мои URLs,

//this URL work perfect, output: {"a":"b"} phpOK 
postJSON("http://192.168.1.100/test.php?username=user&password=pass"); 

//this URL don't work, output: phpOK 
postJSON("http://myddns.net/test.php?username=user&password=pass"); 

код для передачи данных,

public String postJSON(String URL, String jsonStr) { 
    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); 
    StrictMode.setThreadPolicy(policy); 

    HttpURLConnection urlConnection = null; 
    StringBuffer response = null; 
    try { 
     URL url = new URL(URL); 
     urlConnection = (HttpURLConnection) url.openConnection(); 
     urlConnection.setRequestProperty("Content-Type", "application/json"); 
     urlConnection.setRequestMethod("POST"); 
     urlConnection.setFixedLengthStreamingMode(jsonStr.getBytes().length); 

     urlConnection.setConnectTimeout(5000); 
     urlConnection.setReadTimeout(5000); 
     urlConnection.setUseCaches(false); 
     urlConnection.setDoOutput(true); 
     urlConnection.setDoInput(true); 
     urlConnection.connect(); 

JSONObject jsonStr= new JSONObject(); 
jsonStr.put("a", "b"); 

     DataOutputStream printout = new DataOutputStream(urlConnection.getOutputStream()); 
     printout.writeBytes(jsonStr); 
     printout.flush(); 
     printout.close(); 

     //if(urlConnection.getResponseCode() == HttpURLConnection.HTTP_OK) { 
     InputStream is = urlConnection.getInputStream(); 
     BufferedReader br = new BufferedReader(new InputStreamReader(is)); 

     String inputLine; 
     response = new StringBuffer(); 

     while ((inputLine = br.readLine()) != null) { 
      response.append(inputLine); 
     } 
     br.close(); 
    } finally { 
     if(urlConnection != null) 
      urlConnection.disconnect(); 
     if(response != null) 
      return response.toString(); 
     else 
      return ""; 
    } 
} 

Мой PHP,

//in test.php 
<?php 
$phpInput = file_get_contents('php://input'); 
echo $phpInput." phpOK"; 
if(isset($_GET['username']) & isset($_GET['password'])) 
echo "extra vars catched" 
?> 

Я тестирую реальный телефон с использованием данных 3G и ... Мой сервер каким-то образом блокирует публичный ip, потому что, когда я использую локальный ip, он работает отлично. Блокировка выходного потока записи: urlConnection.getOutputStream()

+1

'// этот URL не работает, выходной: phpOK'. ? Если выход phpOK, то я бы сказал, что он работает. – greenapps

+0

, потому что необработанные данные ничего не показывают. вывод: echo file_get_contents ('php: // input') + "phpOK"; –

+0

Вы не совсем поняли, что искали помощь в неправильном направлении. – greenapps

ответ

0

Я нашел проблему:

Проблема моя запись типа DDNS.

Я конфиг моего с DDNS типа записи URL, протокол HTTP: // и IP х.х.х.й: 1994

меняю на DNS хост типа записи (A), IPv4-адрес: MyIP только х.х.х.й без порта.

В моем клиенте URL-адреса я установил порт в URL-адрес.

изменить тип записи моего DDNS и, http://myddns.net/test.php?username=user&password=pass к этому: http://myddns.net:1994/test.php?username=user&password=pass

+0

Хорошо, что вы его нашли! – greenapps

+0

Благодарим вас за помощь @greenapps –

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