ورود

View Full Version : استفاده از کدام روش برای ارتباط با سرور ؟



c0mmander
یک شنبه 05 مرداد 1393, 22:10 عصر
سلام دوستان برای ارتباط با یک وبسایت (php) که برای ارتباط با موبایل مثل ثبت نام کاربر یا تقاضای پرداخت ویا بررسی پرداخت مشتری نوشتم خودم همیشه تمایل داشتم از روش سنتی HttpRequest و HttpResponse استفاده کنم. اما الان نمیدونم که از josn استفاده کنم یا نه؟! ویا بر پایه همون روش همیشگی برنامه ها رو بنویسم. تا اونجایی که من تحقیق کردم مقایسه این دوتا رو منوط به شرایطی گفته بودن که از حالت اول نشه استفاده کرد و یا معماری انتقال بسته از josn بوده .. دوستان اگر میشه یکمی توضیح دید هم از نظر امنیتی و هم از نظر اصولی بودن و ... که از کدوم استفاده کنم؟

slr560
یک شنبه 05 مرداد 1393, 22:15 عصر
عبارت "ارتباط با سرور" رو توی تالار سرچ کنید :|

[younes]
یک شنبه 05 مرداد 1393, 22:27 عصر
این تاپیک (http://barnamenevis.org/showthread.php?461444-%D8%A8%D9%87%D8%AA%D8%B1%DB%8C%D9%86-%D8%B1%D9%88%D8%B4-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%A7%D8%B1%D8%AA%D8%A8%D8%A7%D8%B7-%D8%A8%D8%A7-%D8%B3%D8%B1%D9%88%D8%B1) رو هم برسی کنید

c0mmander
یک شنبه 05 مرداد 1393, 22:36 عصر
خوب قبلا هم این کار رو کرده بودم به جوابی نرسده بودم!

مثلا این ها :
http://barnamenevis.org/showthread.php?457139-%D8%A7%D8%B1%D8%AA%D8%A8%D8%A7%D8%B7-%D8%A8%D8%A7-%D8%B3%D8%B1%D9%88%D8%B1&highlight=%D8%A7%D8%B1%D8%AA%D8%A8%D8%A7%D8%B7+%D8 %A8%D8%A7+%D8%B3%D8%B1%D9%88%D8%B1

http://barnamenevis.org/showthread.php?457344-%D9%85%D8%B4%DA%A9%D9%84-%D8%AF%D8%B1-%D8%A7%D8%B1%D8%AA%D8%A8%D8%A7%D8%B7-%D8%A8%D8%A7-%D8%B3%D8%B1%D9%88%D8%B1&highlight=%D8%A7%D8%B1%D8%AA%D8%A8%D8%A7%D8%B7+%D8 %A8%D8%A7+%D8%B3%D8%B1%D9%88%D8%B1

http://barnamenevis.org/showthread.php?457344-%D9%85%D8%B4%DA%A9%D9%84-%D8%AF%D8%B1-%D8%A7%D8%B1%D8%AA%D8%A8%D8%A7%D8%B7-%D8%A8%D8%A7-%D8%B3%D8%B1%D9%88%D8%B1&highlight=%D8%A7%D8%B1%D8%AA%D8%A8%D8%A7%D8%B7+%D8 %A8%D8%A7+%D8%B3%D8%B1%D9%88%D8%B1

http://barnamenevis.org/showthread.php?454125-%D8%A7%D8%B1%D8%AA%D8%A8%D8%A7%D8%B7-%D8%A8%D8%A7-%D8%B3%D8%B1%D9%88%D8%B1&highlight=%D8%A7%D8%B1%D8%AA%D8%A8%D8%A7%D8%B7+%D8 %A8%D8%A7+%D8%B3%D8%B1%D9%88%D8%B1

در اینا و خیلیا دیگه مثلا با جستجو json بدست میاید هیچ کدوم مقایسه ای بین روش ارسال و دریافت تقاضا ویا ارسال با شی جاوا اسکریپ نداده بودن..

Nevercom
دوشنبه 06 مرداد 1393, 02:52 صبح
خب اصل سوال کمی مشکل داره.
HttpRequest و HttpResponse کلاس هایی هستن که عملیات ارتباط با وب سرویس رو برای شما انجام میدن، اینکه چه داده ای رو رد و بدل کنید به خودتون بستگی داره.

JSON یک ساختار داده ای هست، برای استفاده از JSON بعنوان ساختار داده در ارتباط با وب سرویس، نیازی نیست که از کلاینت دیگری استفاده کنید.
فقط باید بعد از دریافت داده، JSON رو پارس کنید و اطلاعات رو استخراج کنید، که با توجه به ساختار ساده ی JSON روش خیلی مناسبی برای تبادل اطلاعات بخصوص روی پلتفرم موبایل هست.

من قبلاً این دو متد رو برای ارتباط با سرور نوشته بودم، شاید بدردتون بخوره:
/** * Retrieves String representation of {@link HttpResponse}
*
* @param response {@link HttpResponse}
* @return <b>String</b> Actual Response from server as string.
* @throws IOException
* @throws IllegalStateException
* @throws UnsupportedEncodingException
*/
public String getServerResponse(HttpResponse response) throws IOException,
IllegalStateException, UnsupportedEncodingException {
if (response == null) {
return "{}";
}
final InputStream is = response.getEntity().getContent();
final BufferedReader reader =
new BufferedReader(new InputStreamReader(is, HTTP.UTF_8), 100);
final StringBuilder sb = new StringBuilder();
String line = null;


while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}


is.close();
final String out =
URLDecoder.decode(sb.toString().trim(), HTTP.UTF_8).trim();
if (out.length() < 1) {
return "{}";
}
final int ascii = out.charAt(0);


return ascii >= 33 & ascii <= 126 ? out : out.substring(1);
}


/**
* Posts data to server.
*
* @param url Server URL
* @param json {@link JSONObject} to be sent
* @return {@link HttpResponse}
* @throws IOException
* @throws ClientProtocolException
* @throws NameNotFoundException
*/
public HttpResponse postData(String url, JSONObject json)
throws ClientProtocolException, IOException, NameNotFoundException {


final String jsonString = json.toString();
Log.i("JSON_SENT", jsonString);
final String encodedURL = URLEncoder.encode(jsonString, HTTP.UTF_8);


final List<NameValuePair> value = new ArrayList<NameValuePair>();
value.add(new BasicNameValuePair(Constants.INPUT_DATA, encodedURL));


final DefaultHttpClient httpClient = new DefaultHttpClient();


final HttpPost request = new HttpPost(url);
request.setEntity(new UrlEncodedFormEntity(value, HTTP.UTF_8));


final HttpResponse httpResponse = httpClient.execute(request);


return httpResponse;


}

روش استفاده:

final JSONObject json = new JSONObject();

json.put("field1", "data1");
json.put("field2", "data2");
json.put("field3", "data3");


final String response = getServerResponse(postData("http://server.url.com", json));
final JSONObject jsonResponse = new JSONObject(response);

slr560
دوشنبه 06 مرداد 1393, 03:46 صبح
شما باید از Google Volley استفاده کنید
پیشنهاد شده خود گوگل هست. سرعت بالا . و مزیت های دیگه
آخرین فیلم Lynad.com در رابطه با وب سرویس هست. حتما نگاه کنید