PDA

View Full Version : مشکل در برقراری ارتباط با وب سرویس ها در برنامه اندروید !



malihehshajari
سه شنبه 17 مرداد 1391, 11:57 صبح
سلام
من یک برنامه ساده با استفاده از اندروید نوشتم و در اون یک وب سرویس دات نت رو که خودم ایجاد کردم فراخوانی کردم .
وقتی این برنامه رو روی کامپیوترم و در فضای مجازی اجرا میکنم بدون هیچ مشکلی اجرا میشه .
آدرسی که برای شناسایی وب سرویس توسط برنامه اندرویدم میدم http://10.0.2.2:1491/WebSite5/Service.asmx

ولی وقتی برنامم رو روی تبلت اجرا میکنم وب سرویس رو نمیشناسه .
نه با آدرس بالا و نه با آدرس IP کامپیوتر خودم
کسی راه حلی داره؟
با تشکر فراوان

powerboy2988
سه شنبه 17 مرداد 1391, 12:20 عصر
permission دادی به برنامه Android ی که نوشتی؟؟


برای استفاده از شبکه :


<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

برای استفاده از اینترنت :


<uses-permission android:name="android.permission.INTERNET" />

malihehshajari
سه شنبه 17 مرداد 1391, 12:50 عصر
permission دادی به برنامه Android ی که نوشتی؟؟


برای استفاده از شبکه :


<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

برای استفاده از اینترنت :


<uses-permission android:name="android.permission.INTERNET" />
این کد ها رو هم نوشتم ولی بازم جواب نمیده!!!!

powerboy2988
سه شنبه 17 مرداد 1391, 14:11 عصر
چه خطایی می ده؟؟

malihehshajari
سه شنبه 17 مرداد 1391, 14:28 عصر
چه خطایی می ده؟؟
کدی که نوشتم :
package web.ir;
import android.app.Activity;
import android.os.Bundle;
import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope ;
import org.ksoap2.transport.AndroidHttpTransport;
import web.ir.R.string;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.EditText;
import android.widget.TextView;
public class WebActivity extends Activity {
/** Called when the activity is first created. */
private static final String SOAPAction= "http://tempuri.org/InAddIntegers";
private static final String METHOD_NAME="InAddIntegers" ;
private static final String Namespace = "http://tempuri.org/";
private static final String URL="http://192.168.1.6/WebSite5/Service.asmx";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
findViewById(R.id.cmdcalculate1).setOnClickListene r(new OnClickListener() {

public void onClick(View view) {

((TextView)findViewById(R.id.lblstatus1)).setText("...Invoking web service");
String stA =((EditText)findViewById(R.id.numberA1)).getText() .toString();
String stB =((EditText)findViewById(R.id.numberB1)).getText() .toString();
Integer a=null;
Integer b=null;
try {
a=Integer.valueOf(stA);
b=Integer.valueOf(stB);

} catch (Exception e1) {

// TODO: handle exception
}
if(a==null || b==null)
{((TextView)findViewById(R.id.lblstatus1)).setText ("only integer number");

}
SoapObject request = new SoapObject(Namespace, METHOD_NAME);
request.addProperty("a", a);
request.addProperty("b", b);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet=true;
envelope.setOutputSoapObject(request);
AndroidHttpTransport androidHttpTransport=new AndroidHttpTransport(URL);
androidHttpTransport.debug = true;
try {
androidHttpTransport.call(SOAPAction, envelope);
Object result =envelope.getResponse();
((TextView)findViewById(R.id.lblstatus1)).setText( result.toString());

} catch (Exception e) {

(("TextView)findViewById(R.id.lblstatus1)).setText("error);
}


}
});
}
}

وارد آخرین catch میشه

powerboy2988
سه شنبه 17 مرداد 1391, 17:10 عصر
کدتون ظاهرا مشکلی نداره...

اما نگفتید که چه مشکلی داره؟؟

تو catch آخر، اینو بنویسید تا پیغام خطا رو نمایش بده.. :

((TextView)findViewById(R.id.lblstatus1)).setText ("error " + e.toString());

malihehshajari
چهارشنبه 18 مرداد 1391, 08:52 صبح
کدتون ظاهرا مشکلی نداره...

اما نگفتید که چه مشکلی داره؟؟

تو catch آخر، اینو بنویسید تا پیغام خطا رو نمایش بده.. :

((TextView)findViewById(R.id.lblstatus1)).setText ("error " + e.toString());
خطایی که میده :
org.xmlpull.v1.xmlpullParserException:expected:sta rt_tag{http://schemas.xmlsoap.org/soap/envelope/}q

Envelope(position:start_tag<html>@1:6in java.io.inputstreamreader@44c5b6f0)m
البته الان من این رو روی کامپیوتر خودم دارم اجرا میکنم وقتی که آدرس IP سیستم خودم رو میدم این پیغام خطا رو میده.

powerboy2988
چهارشنبه 18 مرداد 1391, 10:40 صبح
خطایی که داری... مربوط به خواندن response برناممتونه...

وب سرویس شما چی برمی گردونه؟؟

به جای استفاده از getResponse از کد زیر استفاده کن :


Object obj = envelope.bodyIn;

malihehshajari
چهارشنبه 18 مرداد 1391, 18:40 عصر
خطایی که داری... مربوط به خواندن response برناممتونه...

وب سرویس شما چی برمی گردونه؟؟

به جای استفاده از getResponse از کد زیر استفاده کن :


Object obj = envelope.bodyIn;

وب سرویس من جمع دو عدد رو برمیگردونه

PersianFA
شنبه 28 مرداد 1391, 02:31 صبح
سلام. منم دقیقا همین مشکل شمارو داشتم اما تونستم حلش کنم
مشکل من اینجا بود که پروژه ی سرویس وبم با پروژه ی سایتم کاملا جدا بودن و همونطور که میدونی باعث میشه آخر کار 2 تا فایل web.config و 2 تا پوشه bin داشته باشیم که یکیش مال وب سرویسه یکیشم مال خود سایت اصلیه
شما باید این 2 پروژه رو در هم ادغام کنی تا دوگانگی سرویس و سایت از بین بره
برای همین باید هر دوی اینارو داخل یک پروژه طراحی کنی
در ضمن وقتی سرویس وبتو آپ میکنی حتما تو Browser نگاهش کن و مطمئن بشو دقیقا مثل localhost شبیه ساز VS کار میکنه
اگر error داد بدون که یا یک جای سرویست اشتباهه یا همین دوگانگی مانع از پیداکردن صحیح فایل های اساسی دوطرف شده
کد آندرویدت مشکلی نداشت البته تا اونجا که سوادم قد میده گفتم
اینکارو بکنید نتیجشو خبر بده

malihehshajari
شنبه 28 مرداد 1391, 08:51 صبح
سلام. منم دقیقا همین مشکل شمارو داشتم اما تونستم حلش کنم
مشکل من اینجا بود که پروژه ی سرویس وبم با پروژه ی سایتم کاملا جدا بودن و همونطور که میدونی باعث میشه آخر کار 2 تا فایل web.config و 2 تا پوشه bin داشته باشیم که یکیش مال وب سرویسه یکیشم مال خود سایت اصلیه
شما باید این 2 پروژه رو در هم ادغام کنی تا دوگانگی سرویس و سایت از بین بره
برای همین باید هر دوی اینارو داخل یک پروژه طراحی کنی
در ضمن وقتی سرویس وبتو آپ میکنی حتما تو Browser نگاهش کن و مطمئن بشو دقیقا مثل localhost شبیه ساز VS کار میکنه
اگر error داد بدون که یا یک جای سرویست اشتباهه یا همین دوگانگی مانع از پیداکردن صحیح فایل های اساسی دوطرف شده
کد آندرویدت مشکلی نداشت البته تا اونجا که سوادم قد میده گفتم
اینکارو بکنید نتیجشو خبر بده

من وب سایت نساختم فقط وب سرویس ساختم

PersianFA
پنج شنبه 02 شهریور 1391, 21:00 عصر
سلام
میدونم وب سرویس ساختید
خب این وب سرویس باید یه جا رو اینترنت باشه و یه دامینی بهش وصل باشه
اصولا روی هر دامین هم یه وب سایت هست
وب سرویست رو با همون سایته ادغام کن
اگرم میتونی یه توضیح بده ببینیم این وب سرویستو کجای اینترنت بارگذاری کردی؟

dehghanimeh
جمعه 03 شهریور 1391, 16:44 عصر
با سلام
دوستمون PersianFA صحیح میگن
به نظر من برای اینکه مطمئن بشی وب سرویس شما از بیرون درست صدا زده میشه
و خروجی مناسب بر می گردونه یه برنامه winform با vs بنویس و وب سرویس هات رو از روی
یه کامپیوتر دیگه صدا بزن ببین خروجی مناسب تولید میشه یا نه ، بعد برید سراغ برنامه اندروید تون
موفق باشد

relax_cp
جمعه 03 شهریور 1391, 22:25 عصر
سلام
ببخشید دوستان. یک مشکل دیگه در رابطه با فراخوانی وب سرویس برام بوجود اومده چون موضوعش و نوع مشکل با این تاپیک متفاوت هست توی این تاپیک گذاشتم:
http://barnamenevis.org/showthread.php?357710-%D8%AF%D8%B1%DB%8C%D8%A7%D9%81%D8%AA-%D8%AF%DB%8C%D8%AA%D8%A7%D8%AA%DB%8C%D8%A8%D9%84-%D8%A7%D8%B2-%D9%88%D8%A8-%D8%B3%D8%B1%D9%88%DB%8C%D8%B3

هر کدام از دوستان تونستن برن یک سری بزنن و ببینن مشکل رو میتونن حل کنن یا نه.
ممنون

malihehshajari
یک شنبه 05 شهریور 1391, 09:13 صبح
سلام
وب سرویس من روی کامپیوتر خودم قرار داره
این برنامه ای که شما میگید رو هم نوشتم وتست کردم مشکلی نداره
ولی الان من میخوام با برنامه نویسی سوکت این کار رو انجام بدم حالا مشکلی که دارم اینه که وقتی IP کامپیوترم رو به تبلت میدم خطای connection time out میده
در صورتی که با همین برنامه از کامپیوتر میتونم به تبلت اطلاعات ارسال کنم
کسی میدونه مشکل کجاست ؟

mr_yaghoobi
دوشنبه 13 شهریور 1391, 14:49 عصر
با سلام خدمت دوستان یه راهنمایی منو بکنین
فوری؟
من میخوام بدونم میشه توی اندروید از نرم تفازی شبیه wamp که phpmyadmin و mysql رو داره استفاده کرد؟
من باید یه پروژه تحویل بدم در اندروید که دارای بانک اطلاعاتیه
توی vb در ویندوز بلذم و ساختم ولی اندروید رو نمیدونم
میشه راهنمایی کنین
mr_yaghoobi@yahoo.com