Я пытаюсь отправить данные json в php-скрипт из своего приложения Android с HttpClient и получить ответ.Ответ Android HttpClient
Android код
private void sendPurchase(String SKU) throws IOException{
Log.e("sendPurchase","Inside sendPurchase");
final SharedPreferences prefs = getGCMPreferences(getApplicationContext());
int pur_user = prefs.getInt("C_user", Integer.MIN_VALUE);
InputStream inputStream = null;
String result = "";
HttpClient httpclient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost("http://www.*.com/includes/purchase.php");
JSONObject json = new JSONObject();
try {
json.put("PUR_sku", SKU);
json.put("PUR_user", pur_user);
} catch (JSONException e) { Log.e("SendPurchase","Problem with Json Object"); }
Log.i("JSONObject", json.toString());
StringEntity se = new StringEntity(json.toString(), HTTP.UTF_8);
httpPost.setEntity(se);
httpPost.setHeader("Accept", "application/json");
httpPost.setHeader("Content-type", "application/json");
HttpResponse httpResponse = httpclient.execute(httpPost);
inputStream = httpResponse.getEntity().getContent();
if(inputStream != null){ result = convertInputStreamToString(inputStream); }
else{result = "Did not work!"; }
Log.e("RESULT",result);
}
private static String convertInputStreamToString(InputStream inputStream) throws IOException{
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String line = "";
String result = "";
while((line = bufferedReader.readLine()) != null)
result += line;
inputStream.close();
return result;
}
И PHP скрипт
<?
$auth=0;
require('./connexion.php');
$data = file_get_contents('php://input');
//$data = '{"PUR_sku":"singleone","PUR_user":"3"}';
$json = json_decode($data,true);
/* Some database stuff ... */
echo "Retour ".print_r($json)." et ".$json['PUR_sku']." et ".$json['PUR_user'];
?>
Когда я запустить приложение и выполнять функцию sendPurchase, кажется, не будет хорошо до исполнения HttpPost. В logcat я получаю все журналы с правильными параметрами, кроме последнего журнала «РЕЗУЛЬТАТ», который не появляется. Вот почему я предполагаю, что что-то не так с выполнением HttpPost, но на самом деле я не знаю, возникает ли проблема со стороны приложения или стороны php-скрипта ... Когда я выполняю скрипт php только в веб-браузере, заменяя первую строку данных на вторую, все в порядке. Но когда дело доходит до приложения, это не нормально ... Объект Json, посланный (надеюсь) на сценарий, тоже выглядит нормально: {«PUR_user»: 3, «PUR_sku»: «singleone»}
(Функция sendPurchase выполняется в фоновом режиме).
Любая идея о том, что я делаю неправильно? Благодаря !
/РЕДАКТИРОВАТЬ/
Здесь LogCat для @RyuZz раствора. Мой код о покупке предмета, его потреблении и отправке нового значения в мою базу данных на веб-сервере. Покупка & потребляется, но я не могу отправить эти значения на веб-сервер. И снова, когда я выполняю скрипт php только в веб-браузере, заменяя первую строку данных на вторую, все в порядке. Обратите внимание, что у меня есть другой похожий код для регистрации пользователя в GCM, используя HttpClient, и этот код работает нормально.
06-25 14:07:12.968: D/IabHelper(21833): Successfully consumed sku: singleconf
06-25 14:07:12.968: D/IabHelper(21833): Ending async operation: consume
06-25 14:07:12.979: D/CONSUME(21833): Consumption finished. Purchase: PurchaseInfo(type:inapp):{"orderId":"12999763169054705758.1353445524837889","packageName":"com.*.*","productId":"singleconf","purchaseTime":1435234296875,"purchaseState":0,"purchaseToken":"bohbcbiigcbidfficbikebnk.AO-J1OzuQ_SsNTG1h9MtUvbaPc3PeN9nBHG-qBOE82ao1rTDFNrgA7tYQcMdECxCVFrrZEn_QifQ28OcIupyesZI-5cjDILFODYpBEaeqMfE0wCAeMFkJLfNUK_TsKPMj7F2sBDdgOYx"}, result: IabResult: Successful consume of sku singleconf (response: 0:OK)
06-25 14:07:12.979: D/CONSUME(21833): You bought & consumed a single conf
06-25 14:07:12.979: D/CONSUME(21833): End consumption flow.
06-25 14:07:12.979: E/Purchase Background(21833): Inside doInBackground
06-25 14:07:12.979: E/sendPurchase(21833): Failed to send HTTP POST request due to: java.lang.NullPointerException
Вы получаете журнал '«Не работает!»'? –
@Heyyou no я не получаю журнал «Не работает» ... –
Можете ли вы включить логин в свой код, пожалуйста? –