بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

ارسال اطلاعات به سرور و دریافت پاسخ

مدیریت گفتگو
احسان منصوری 11 سال پیش
آخرین تغییر: 11 سال پیش

سلام. من میخوام اطلاعاتی رو از اندروید به سرور ارسال کنم و یه پاسخ از سرور دریافت کنم. حالا نمیدونم چجوری این کد رو بنویسم. 

پست کردن اطلاعاتم مشکلی نداره فقط کد دریافت پاسخ با استفاده از responseش رو بلد نیستم.

این کد رو نوشتم ولی کار نمیکنه:

         try {
            HttpClient client = new DefaultHttpClient();
            HttpPost method = new HttpPost(url);
        if(params != null){
            method.setEntity(new UrlEncodedFormEntity(params));
        }
            HttpResponse response = client.execute(method);
            Log.i("STATUS_CODE", "Status Code: " + response);
            String responseBody = EntityUtils.toString(response.getEntity());//اینو واسه دریافت پاسخ نوشتم
            Log.i("LOG", "FINAL_RESULT: " +responseBody );

            int code = response.getStatusLine().getStatusCode();
            Log.i("STATUS_CODE", "Status Code: " + code);
            InputStream inputStream = response.getEntity().getContent();
            String result = convertInputStreamtoString(inputStream);

            return result;
        }
        catch (Exception  e){
            e.printStackTrace();
        }

 

نظرات

Criss 11 سال پیش
کد php رو هم اگر ممکنه بزارید
احسان منصوری 11 سال پیش
به کد php متاسفانه دسترسی ندارم چون یکی از دوستان سمت سرورش رو نوشته

پاسخ‌ها 2

Criss 11 سال پیش

برای دریافت دیتا بهتره به این شکل باشه که با استفاده از متد post هست و درون فایل php از فانکشن استفاده شده

 public static void readdata_FOR_POST() {
//WebServiceForPost رو پایین تر میزارم کلاس
String result = WebServiceForPost.readUrls("http://" + G.ip + "/note-server/service.php?action=read", null);
if (result != null) {
try {
G.tasks.clear();
JSONArray tasks = new JSONArray(result);
for (int i = 0; i < tasks.length(); i++) {
JSONObject object = tasks.getJSONObject(i);
StructTask task = new StructTask();
task.id = object.getLong("task_id");
task.title = object.getString("task_title");
task.desc = object.getString("task_desc");
task.done = object.getInt("task_done") == 1 ? true : false;

Log.i("LOG", "" + object.getString("task_title"));
//netTasks.add(task);
G.tasks.add(task);
}
}
catch (JSONException e) {
e.printStackTrace();
}

}

}

کلاس WebServiceForPost

  public class WebServiceForPost {

public static String readUrls(String url, ArrayList<NameValuePair> params) {
try {
HttpClient client = new DefaultHttpClient();
HttpPost method = new HttpPost(url);
if (params != null) {
method.setEntity(new UrlEncodedFormEntity(params));
}
HttpResponse response = client.execute(method);
InputStream stream = response.getEntity().getContent();
String result = convertInputStreamToString(stream);
return result;
}
catch (ClientProtocolException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();

}
return null;
}


private static String convertInputStreamToString(InputStream inputstream) {
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(inputstream));
StringBuilder builder = new StringBuilder();
String line = "";

while ((line = reader.readLine()) != null) {
builder.append(line);
}

return builder.toString();
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
}

یا کد زیر که برای استفاده از get هست

  private void readdata() {
String result = WebService.readUrls("http://" + G.ip + "/note-server/");
if (result != null) {
try {
G.tasks.clear();
JSONArray tasks = new JSONArray(result);
for (int i = 0; i < tasks.length(); i++) {
JSONObject object = tasks.getJSONObject(i);
StructTask task = new StructTask();
task.id = object.getLong("task_id");
task.title = object.getString("task_title");
task.desc = object.getString("task_desc");
task.done = object.getInt("task_done") == 1 ? true : false;

Log.i("LOG", "" + object.getString("task_title"));
//netTasks.add(task);
G.tasks.add(task);

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

}
adapter.notifyDataSetChanged();
}

کد کلاس WebService

 package com.freestyler.notes.criss;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;


public class WebService {

public static String readUrls(String url) {
try {
HttpClient client = new DefaultHttpClient();
HttpPost method = new HttpPost(url);

HttpResponse response = client.execute(method);
InputStream stream = response.getEntity().getContent();
String result = convertInputStreamToString(stream);
return result;
}
catch (ClientProtocolException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();

}
return null;
}


private static String convertInputStreamToString(InputStream inputstream) {
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(inputstream));
StringBuilder builder = new StringBuilder();
String line = "";

while ((line = reader.readLine()) != null) {
builder.append(line);
}

return builder.toString();
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
}

 

 

نظرات

احسان منصوری 11 سال پیش
این روش واسه دریافت جیسون معمولی مگه نیست؟ مثلا اطلاعات یه سایت رو به جیسون تبدیل میکنیم و لینک اون جیسون رو وارد این متد میکنیم و اطلاعاتشو میخونیم؟ ولی من همونطوری که توی اون کد توضیح دادم، پاسخ رو آنی دریافت میکنم با استفاده از response
Criss 11 سال پیش
برای اینکه جواب رو بصورت آنی دریافت کنید باید از دوتا کد هایی که بالا گذاشتم استفاده کنی < که یک سری پردازش هم سمت سرور در php انجام میشه مقدار رو دریافت میکنه < و جیسون مورد نظر رو خروجی میده
Criss 11 سال پیش

کد استاد داینامیک نیست <

وبا توجه به نوع خروجی جیسون باید تشخیص بدید که باید JSONOBJECT دریافت کنید یا SJONARRAY

تصاویری که از اشیانه اپلود کردم رو انتی ویروس گیر میده و لود نمیشه !

نظرات

احسان منصوری 11 سال پیش
نگفتم این کد داینامیک نیست؟:) پس باید بشینیم و خودمون آبجکت رو از آرایه تشخیص بدیم
Hossein Kurd 11 سال پیش
هوش مصنوعی هم قرار نبوده پیاده بشه ، من هم مدتی هست دارم روی داینامیک کردنش کار می کنم :) دارم به نتابجی می رسم ، وقتم که آزاد بشه به نتیجه می رسونم به امید خدا و نتیجه رو اعلام می کنم

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