این روش واسه دریافت جیسون معمولی مگه نیست؟ مثلا اطلاعات یه سایت رو به جیسون تبدیل میکنیم و لینک اون جیسون رو وارد این متد میکنیم و اطلاعاتشو میخونیم؟ ولی من همونطوری که توی اون کد توضیح دادم، پاسخ رو آنی دریافت میکنم با استفاده از response
بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ
ارسال اطلاعات به سرور و دریافت پاسخ
مدیریت گفتگو
آخرین تغییر: 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();
}
پاسخها 2
برای دریافت دیتا بهتره به این شکل باشه که با استفاده از متد 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;
}
}
نظرات
برای اینکه جواب رو بصورت آنی دریافت کنید باید از دوتا کد هایی که بالا گذاشتم استفاده کنی < که یک سری پردازش هم سمت سرور در php انجام میشه مقدار رو دریافت میکنه < و جیسون مورد نظر رو خروجی میده
کد استاد داینامیک نیست <
وبا توجه به نوع خروجی جیسون باید تشخیص بدید که باید JSONOBJECT دریافت کنید یا SJONARRAY
تصاویری که از اشیانه اپلود کردم رو انتی ویروس گیر میده و لود نمیشه !

نظرات
نگفتم این کد داینامیک نیست؟:) پس باید بشینیم و خودمون آبجکت رو از آرایه تشخیص بدیم
هوش مصنوعی هم قرار نبوده پیاده بشه ، من هم مدتی هست دارم روی داینامیک کردنش کار می کنم :) دارم به نتابجی می رسم ، وقتم که آزاد بشه به نتیجه می رسونم به امید خدا و نتیجه رو اعلام می کنم
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .
ویرایش
پیام
نظرات