آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

تبدیل جیسون به متن ( URL Shortener )

Smkm79  10 سال پیش  10 سال پیش
0 0

سلام خدمت دوستان،

من در برنامم از URL Shortener API گوگل استفاده میکنم که به تازگی کدهاش دستخوش تغییرات شده و من کلا گیج شدم و نمیدونم باید چکار کنم :(

برنامه بدرستی کار میکنه و اطلاعات JSON رو در LogCat چاپ میکنه . منم میخوام قسمت مورد نظرم رو به عنوان متن روی TextView ست کنم ولی نمیدونم چجوری!

کلاس URL Shortener :

public class URLShortener {

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

    public URLShortener() {

    }

    public JSONObject getJSONFromUrl(String address,String longUrl) {

        // Making HTTP request
        try {
            // DefaultHttpClient
            DefaultHttpClient httpClient = new DefaultHttpClient();
            HttpPost httpPost = new HttpPost(address);
            httpPost.setEntity(new StringEntity("{\"longUrl\":\""+ longUrl+"\"}"));
            httpPost.setHeader("Content-Type", "application/json");
            HttpResponse httpResponse = httpClient.execute(httpPost);
            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();
            Log.e("JSON", json);
        } catch (Exception e) {
            Log.e("Buffer Error", "Error converting result " + e.toString());
        }

        // 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;
    }
}

کلاس ActivityMain 

public class MainActivity extends ActionBarActivity {

    private Button btnGet;
    private TextView shortUrl;
    private EditText edtLongUrl;
    private static final String ADDRESS = "https://www.googleapis.com/urlshortener/v1/url?key={API_KEY}";     @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.activity_main);         edtLongUrl = (EditText) findViewById(R.id.edtUrl);         shortUrl = (TextView) findViewById(R.id.txtUrl);         btnGet = (Button) findViewById(R.id.btnUrl);         btnGet.setOnClickListener(new View.OnClickListener() {             @Override             public void onClick(View v) {                 new URLShort().execute();             }         });     }     private class URLShort extends AsyncTask<String, String, JSONObject> {         private ProgressDialog pDialog;         String longUrl;         @Override         protected void onPreExecute() {             super.onPreExecute();             pDialog = new ProgressDialog(MainActivity.this);             pDialog.setMessage("Contacting Google Servers ...");             pDialog.setIndeterminate(false);             pDialog.setCancelable(true);             longUrl = edtLongUrl.getText().toString();             pDialog.show();         }         @Override         protected JSONObject doInBackground(String... args) {             URLShortener jParser = new URLShortener();             JSONObject json = jParser.getJSONFromUrl(ADDRESS, longUrl);             return json;         }         String ShortUrl;         @Override         protected void onPostExecute(JSONObject json) {             pDialog.dismiss();             try {                 if (json != null){                     ShortUrl = json.getString("id");                     shortUrl.setText(ShortUrl);                     pDialog.dismiss();                 }else{                     shortUrl.setText("Network Error");                     pDialog.dismiss();                 }             } catch (JSONException e) {                 e.printStackTrace();             }         }     }

از راهنماییتون ممنونم .

0 0
دوست عزیز ، اینجا انجمن پرسش و پاسخ هست < ما انتظار داریم وقتی چیزی رو توضیح میدیم شما متوجه توضیحات ما بشوید < درحالی که دارید مستقیما میگید که از Json ها چیزی نمیدونم !! بنابر این این تاپیک شما اسپم محسوب میشه چون شما کدهاتون رو از جایی کپی کردید و نسبت به کدهای خودتون آشنایی ندارید ، بنابر این هیچ رقبتی به جواب دادن به سوال شما وجود نداره < چون شما اطلاعات کافی برای فهمیدن موضوعه ندارید ، و من فکر میکنم شما یک جواب آماده میخواهید که فقط کپی کنید و براتون کار کنه ، که معمولا همچین چیزی مرسوم نیست و خیلی کم پیش میاد کسی وقت بزاره و همچین کاری رو برای شما انجام بده < در آخر پیشنهاد میکنم < آموزش های مربوط به Json در پروژه NODE استاد رو ببینید < یادگیریش آسون هست و آنچنان بحث پیچیده و سختی نیست (10 سال پیش)
+1 0
نگفتم نمیدونم ، گفتم زیاد سر در نمیارم و مشکل من همینه که نمیخوام کل متن JSON رو ست کنم و فقط بخش URL رو میخوام . درضمن شما ناراحت هستید ؟ جواب ندید نیازی به کمک های شما نیست! ( NODE نه NOTE ) (10 سال پیش)
0 0
Json که دریافت میشه رو بزارید < بزارید < با همچین متدی میشه چیزی که شما لازم دارید رو دریافت کرد < json.getString("id"); (10 سال پیش)
0 0
متأسفانه دریافت نمیکنه :( (10 سال پیش)
 برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال 
Smkm79  10 سال پیش
0 0

08-16 11:18:41.849  17427-17487/ir.simorgh.urlshortner E/JSON﹕ {n "kind": "urlshortener#url",n "id": "http://goo.gl/IEr1d",n "longUrl": "http://iranapps.ir/"n}n

08-16 11:18:41.849  17427-17487/ir.simorgh.urlshortner E/JSON Parser﹕ Error parsing data org.json.JSONException: Expected ':' after n at character 4 of {n "kind": "urlshortener#url",n "id": "http://goo.gl/IEr1d",n "longUrl": "http://iranapps.ir/"n}n

0 0
اگر به درستی دریافت نمیشه < مقدار ارسالی شما یک Json استاندارد نیست < ونمیشه اونرو دریافت کرد < اما اگر این String باشه < شما از این String کافیه مقدار Key رو دریافت کنید < مثلا برای key که برابر kind مقداری برابرurlshortener#url داره و برای Key بعدی id مقداری برابر لینک (10 سال پیش)
پاسخ به سوال 
Criss  10 سال پیش
0 0

برای مثال <

 @Override
        protectedvoid onPostExecute(JSONObject json){
            pDialog.dismiss();
            try{
                if(json !=null){
                    ShortUrl= json.getString("id");
                    shortUrl.setText(ShortUrl);
                    pDialog.dismiss();
                }else{
                    shortUrl.setText("Network Error");
                    pDialog.dismiss();
                }

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

توی این متد شما مقدار id رو دارید در ShortUrl  ذخیره میکنید <

مقدار ShortUrl  رو Log کنید < که مطمئن بشید کدها به درستی داره مقادیر رو دریافت میکنه

+1 0
آقا یافتم ، یافتم ، یافتم :))) مشکل از این خط بود sb.append(line + "n"); به خاطر n فرمت جیسون خراب می شد! (10 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .