2015-05-26 2 views
1

Я изо всех сил пытаюсь выяснить, в чем проблема. Точный же код работает в другом проекте. Он работает в текущем проекте, если я укажу его на URL в предыдущем проекте, но по новому URL он просто не будет публиковать NameValuePairs.Android/PHP - Борьба за сообщение

Это то, что я использую, чтобы получить строку:

public static String getJSON(String url, List<BasicNameValuePair> params, int timeout) { 

    String response = ""; 
    try { 

     UrlEncodedFormEntity entity = new UrlEncodedFormEntity(params); 

     URL uri = new URL(url); 
     HttpURLConnection request = (HttpURLConnection) uri.openConnection(); 

     request.setUseCaches(false); 
     request.setDoOutput(true); 
     request.setDoInput(true); 

     request.setRequestMethod("POST"); 
     OutputStream post = request.getOutputStream(); 
     entity.writeTo(post); 
     post.flush(); 

     BufferedReader in = new BufferedReader(new InputStreamReader(request.getInputStream())); 
     String inputLine = ""; 
     while ((inputLine = in.readLine()) != null) { 
      response += inputLine; 
      // res = response; 
     } 
     post.close(); 
     in.close(); 
    } catch (Exception e) { 
     Log.e("Your app", "error", e); 
    } 

    return response; 

} 

Это мой PHP-файл:

<?php 

if (isset($_POST['Type'])){ 
    print_r($_POST); 
}else { 
    echo "No post received"; 
} 

?> 

Вот мой запрос:

  List<BasicNameValuePair> nameValuePair = new ArrayList<BasicNameValuePair>(1); 
      nameValuePair.add(new BasicNameValuePair("Type", "20")); 
      nameValuePair.add(new BasicNameValuePair("version", "1.3")); 

      String stringArrayElement = "\n"; 
      String result = Config.getJSON(Config.MyUrl + "test4.php", nameValuePair, 1000); 
      JSONObject JSON_DATA; 

      // Making HTTP Request 

      try { 
       JSON_DATA = new JSONObject(result); 

       Downloaded_menu_array = JSON_DATA.getJSONArray("Menu"); 

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

      } 

всегда В моем PHP-файле попадает «Нет сообщений». Есть ли что-нибудь, что выпрыгивает с кодом, или я пропускаю что-то еще?

+0

В PHP вы можете записывать '$ _REQUEST', чтобы показать, к какому запросу пришли? –

+0

Я пробовал это, я просто получаю пустой пост, когда возвращаю print_r(); Код копируется и вставлен из другого моего проекта - разница - это только URL. Могу ли я пропустить что-то с публикациями ограничений через внешние источники? Я проверил максимальный размер сообщения в ini-файле, но он работает с тем же ini, что и с другим URL-адресом. Тот же сервер. – ScottC

ответ

0

Очень смущающе.

Оказывается, это был домен - он имел перенаправление при перенаправлении http://www.domain.com в http://domain.com, что означало URL-адрес моего Config.MyUrl был неверным.

Это бросило меня, поскольку он все еще ударил файл - я могу только догадываться, что он попал в файл, прежде чем он перенаправил и закончил обработку после его перенаправления.

0

Я считаю, что ваша проблема основывается на том, как вы вызываете файл PHP (в данном случае, getJSON), который будет выполнять GET запрос, то почему ваш $_POST массив пуст. Для целей отладки в вашем скрипте php попробуйте:

var_dump($_GET); 

И проверьте, не получаете ли вы что-либо. Я уверен, что следующая строка:

String result = Config.getJSON(Config.MyUrl + "test4.php", nameValuePair, 1000); 

Является основной причиной вашего пустого ответа. Вы должны попытаться либо выполнить запрос POST к вашему сценарию, либо получить ваши данные в скрипте с помощью метода $_GET.

+0

getJSON - это имя моей строки void: public static String getJSON (String url, List params, int timeout) в этом файле Я указываю, что это запрос POST request.setRequestMethod ("POST"); – ScottC

+0

Чем я боюсь, что вы всегда должны предоставить весь соответствующий код своим вопросам, чтобы избежать такого рода недоразумений. метод, называемый getJSON, сообщает (по крайней мере, мне), что вы выполняете вызов метода get. – taxicala

+0

Метод (который я написал выше) называется getJSON, потому что я получаю JSON из URL-адреса. – ScottC