ورود

View Full Version : چرا جی سون همیشه مقدار صحیح برمیگردونه ؟



Amin-rz
یک شنبه 23 اسفند 1394, 14:51 عصر
سلام.این کد رو ببینید.حتی اگر از سمت سرور هیچ پاسخی نیاد باز هم مقدار ok برابر با "ok" هست.
دلیلش چیه؟

String ok ;
String emtiaz;

class savescore extends AsyncTask<String, String, String> {

@Override
protected void onPreExecute() {
super.onPreExecute();

param = new ArrayList<NameValuePair>();
param.add(new BasicNameValuePair("key", "sabtemtiaz"));
param.add(new BasicNameValuePair("emtiaz", emtiaz));

pd = new ProgressDialog(UpdateActivity.this);
pd.setMessage("در حال بارگزاری");
pd.show();
}

@Override
protected String doInBackground(String... params) {

jsonobject = jparser.makeHttpRequest(url, "POST", param);
try {

ok = jsonobject.getString("ok");

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


return null;
}

@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);

if (ok.equals("ok"))
{


toast("امتیاز خریداری شده دریافت شد");

}else {


Toast toast = Toast.makeText(ApplicationLoader.applicationContex t, "خطا در ارتباط با سرور", Toast.LENGTH_SHORT);
toast.show();

}
pd.dismiss();
}
}

Amin-rz
یک شنبه 23 اسفند 1394, 14:56 عصر
البته وقتی از سمت سرور پاسخی برای برنامه فرستاده میشه مشکلی نیست ولی مشکل وقتی پیش میاد که از سمت سرور مقداری برای ok فرستاده نمیشه.
اونوقت نرم افزار مقدار اوکی رو

String ok = "ok"

در نظر میگیره و فکر می کنه ارتباط با موفقیت انجام شده.
اینم اضافه کنم که هیچ جای اکتیویتی مقدار ok رو تغییر نمیدم.

کلاس JSONParser :



package org.telegram.ui;

import android.util.Log;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.entity.UrlEncodedFormEntity ;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.URLEncodedUtils;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.List;

public class JSONParser {

static InputStream is = null;
static JSONObject jObj = null;
static String json = "";

// constructor
public JSONParser() {

}

// function get json from url
// by making HTTP POST or GET mehtod
public JSONObject makeHttpRequest(String url, String method,
List<NameValuePair> params) {

// Making HTTP request
try {

// check for request method
if(method == "POST"){
// request method is POST
// defaultHttpClient
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
httpPost.setEntity(new UrlEncodedFormEntity(params));

HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();

}else if(method == "GET"){
// request method is GET
DefaultHttpClient httpClient = new DefaultHttpClient();
String paramString = URLEncodedUtils.format(params, "utf-8");
url += "?" + paramString;
HttpGet httpGet = new HttpGet(url);

HttpResponse httpResponse = httpClient.execute(httpGet);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
}

} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

try {
BufferedReader reader = new BufferedReader(new InputStreamReader(
is, "iso-8859-1"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
json = sb.toString();
} catch (Exception e) {
Log.e("Buffer Error", "Error converting result " + e.toString());
}

// try parse the string to a JSON object
try {
jObj = new JSONObject(json);
} catch (JSONException e) {
Log.e("JSON Parser", "Error parsing data " + e.toString());
}

// return JSON String
return jObj;

}
}