PDA

View Full Version : اتصال به وب سرویس در اندروید



bax998
جمعه 19 تیر 1394, 22:51 عصر
سلام
من php کار میکنم و مسلط هستم به php
میخواستم برنامه اندرویدی که نوشتم رو متصل کنم به وب سرویس و یک سری اطلاعات رو با وب سرویس ارسال و دریافت کنم
طبق این لینک رفتم اما error میده و از برنامه خارج میشه
http://www.wikihow.com/Execute-HTTP-POST-Requests-in-Android

همین کد ها رو جای دیگه دیدم که داخل یک کلاس که از AsyncTask ارث بری میکرد قرار داده بود و کدش کار میکرد !
ولی خیلی کدهاش زیاد و شلوغ بود و اکثرش به کارم نمیومد :متفکر:
و کد هاش رو هم از کلاس خارج میکنم باز ارور میده و از برنامه خارج میشه

ممنون میشم دوستان گرامی اگه راهنمایی کنید

djtrex
جمعه 19 تیر 1394, 23:31 عصر
سلام
من php کار میکنم و مسلط هستم به php
میخواستم برنامه اندرویدی که نوشتم رو متصل کنم به وب سرویس و یک سری اطلاعات رو با وب سرویس ارسال و دریافت کنم
طبق این لینک رفتم اما error میده و از برنامه خارج میشه
http://www.wikihow.com/Execute-HTTP-POST-Requests-in-Android

همین کد ها رو جای دیگه دیدم که داخل یک کلاس که از AsyncTask ارث بری میکرد قرار داده بود و کدش کار میکرد !
ولی خیلی کدهاش زیاد و شلوغ بود و اکثرش به کارم نمیومد :متفکر:
و کد هاش رو هم از کلاس خارج میکنم باز ارور میده و از برنامه خارج میشه

ممنون میشم دوستان گرامی اگه راهنمایی کنید

قبلا بحث شده:
http://barnamenevis.org/showthread.php?500158-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D8%A7%D9%86%D8%AF%D8%B1%D9%88%DB%8C%D8%AF&p=2234676&viewfull=1#post2234676

یه نمونه با okhttp:

http://barnamenevis.org/showthread.php?499313-%D8%AF%D8%B1%D8%AE%D9%88%D8%A7%D8%B3%D8%AA-%DA%A9%D8%AF-listView-%D8%A8%D8%A7-lazy-load&p=2231042&viewfull=1#post2231042

NeoFighT
جمعه 19 تیر 1394, 23:31 عصر
سلام
اینجوری که توضیح دادین نمیشه دلیل اصلی error رو فهمید ،
شما log برنامه رو اگه بزارید ، اونوقت میتونیم مشکل رو بفهمیم

bax998
شنبه 20 تیر 1394, 20:35 عصر
ممنون بابت راهنمایی دوستان عزیز

ببینید من کدم رو توی
new Thread(new Runnable() {

public void run() { که میگذارم اجرا میگیره و مشکلی نداره
اما مثل اینکه نمیشه چیزی برای runnable ارسال کرد یا مقادیر بیرونی رو تغییر داد !
میشه راهنمایی کنید :گریه:

bax998
شنبه 20 تیر 1394, 23:46 عصر
upupupupup

NeoFighT
یک شنبه 21 تیر 1394, 09:32 صبح
سوالتون مبهمه

bax998
یک شنبه 21 تیر 1394, 12:15 عصر
مشکل حل شد. :|

Ebrahimkh
یک شنبه 21 تیر 1394, 14:32 عصر
دوست عزیز اگه ممکنه سورستون رو قرار دهید تا ماهم استفاده کنیم
تاپیک به این خوبی حیفه که بی بار علمی به پایان برسه


ممنون

bax998
یک شنبه 21 تیر 1394, 18:03 عصر
من یک کلاس ساختم با یک تابع استاتیک که url رو ‌+‌ پارامتر های get و post دریافت میکنه و محتوای صفحه رو به صورت string میگیره:

public static String sendRequest ( String url, ArrayList< BasicNameValuePair > postParams, ArrayList< BasicNameValuePair > getParams ) {

postParams = postParams == null ? new ArrayList< BasicNameValuePair > () : postParams;
url += "?";

if ( getParams != null ) {

for ( BasicNameValuePair pair : getParams ) {
url += ( "&" + pair.getName () + "=" + pair.getValue () );
}
}

InputStream is = null;
try {

DefaultHttpClient httpClient = new DefaultHttpClient ();
HttpPost httpPost = new HttpPost ( url );
httpPost.setEntity ( new UrlEncodedFormEntity ( postParams ) );
HttpResponse httpResponse = httpClient.execute ( httpPost );
HttpEntity httpEntity = httpResponse.getEntity ();
is = httpEntity.getContent ();
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 ();

return sb.toString ();
} catch ( Exception e ) {
return null;
}
}


و نکته ی مهمش اینجا هست که موقع فراخوانی باید در Thread باشیم


Thread t = new Thread ( new Runnable ()
{

@Override public void run () {

TextView v = ( TextView ) findViewById ( R.id.textView );

try {

ArrayList< BasicNameValuePair > b = new ArrayList< BasicNameValuePair > ();
b.add ( new BasicNameValuePair ( "1", "1val" ) );
b.add ( new BasicNameValuePair ( "2", "2val" ) );
b.add ( new BasicNameValuePair ( "3", "3val" ) );

String s = Webservice.sendRequest ( "http://parandsystem.net/test.php", b, b );

v.setText ( s );

} catch ( Exception e ) {
}

}
} );

t.start ();
try {
t.join ();
} catch ( InterruptedException e ) {
e.printStackTrace ();
}

bax998
یک شنبه 21 تیر 1394, 19:18 عصر
iso-8859-1 را به UTF-8 تغییر دادم