Java Da Çalışan Kod Android De Çalışmıyor.
-
Dün bi konu açmıştım SQL ve WebServisi bitirdim Daha sonra IIS Attım siteyi publish ettikten sonra. Eclipse de olan Java da. Çalışan kod. Android Studio da çalışmıyor . Web browser de çalışıyor servis yani cevap alabiliyorum . Ama Android Studio da çalıştırınca SoapPrimitive Null değer geldi diyor. Java ( ECLİPSE) de çalıştırınca kodu Normal bir şekilde çalışıyor. Androidmanifest dosyasında sadece internet ekli.
--Java Kodum --
public static String WSDL_TARGET_NAMESPACE="http://tempuri.org/";
public static String SOAP_ADRESS="http://10.52.228.122:8081/worlddeckservice.asmx";
public String TryIt()
{
String SOAP_ACTION="http://tempuri.org/TryIt";
String OPERATION_NAME="TryIt";
SoapObject request= new SoapObject(WSDL_TARGET_NAMESPACE, OPERATION_NAME);
SoapSerializationEnvelope envelope=new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet=true;
envelope.setOutputSoapObject(request);
SoapPrimitive response=null;
try{
HttpTransportSE httpTransport=new HttpTransportSE(SOAP_ADRESS);
httpTransport.setXmlVersionTag("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
httpTransport.debug=true;
httpTransport.call(SOAP_ACTION, envelope);
response = (SoapPrimitive) envelope.getResponse();
}catch(Exception e)
{
System.out.println("Get Error : "+e.getMessage());
}
return response.toString();
}
---Android Kodum ---
public static String WSDL_TARGET_NAMESPACE="http://tempuri.org/";
public static String SOAP_ADRESS="http://10.52.228.122:8081/worlddeckservice.asmx";
public String TryIt()
{
String SOAP_ACTION="http://tempuri.org/TryIt";
String OPERATION_NAME="TryIt";
SoapObject request= new SoapObject(WSDL_TARGET_NAMESPACE, OPERATION_NAME);
SoapSerializationEnvelope envelope=new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet=true;
envelope.setOutputSoapObject(request);
SoapPrimitive response=null;
try{
HttpTransportSE httpTransport=new HttpTransportSE(SOAP_ADRESS);
httpTransport.setXmlVersionTag("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
httpTransport.debug=true;
httpTransport.call(SOAP_ACTION, envelope);
response = (SoapPrimitive) envelope.getResponse();
}catch(Exception e)
{
System.out.println("Get Error : "+e.getMessage());
Log.e("Get Error ",e.getMessage()+" <--- Error");
}
return response.toString();
}
Log Cıktısı ;
FATAL EXCEPTION: main Process: com.mhmdalmz.example.worlddeck, PID: 13513 java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String org.ksoap2.serialization.SoapPrimitive.toString()' on a null object reference at com.mhmdalmz.example.worlddeck.CallService.TryIt(CallService.java:43) at com.mhmdalmz.example.worlddeck.MainScreen$OpenFragment.onClick(MainScreen.java:45) -
Çözülmedi :( Gececiler için son bi up olsun
-
response nesnen null olduğu için ve sen de tostring i çağırdığın için hata veriyor..
kodun zaten catch e de düşmesi gerekir, çünkü null dönen sonucu cast yapmışsın.. catch deki exception mesajında ne diyor ?
ayrıca web servis metodun string mi dönderiyor yoksa farklı bir tür mü?
farklı bir tür ise şöyle yapabilirsin
SoapObject response2 =(SoapObject)envelope.bodyIn;
bunun sonucu ne gelecek bak bakalım..
-
unbalanced bunu yazdı
response nesnen null olduğu için ve sen de tostring i çağırdığın için hata veriyor..
kodun zaten catch e de düşmesi gerekir, çünkü null dönen sonucu cast yapmışsın.. catch deki exception mesajında ne diyor ?
ayrıca web servis metodun string mi dönderiyor yoksa farklı bir tür mü?
farklı bir tür ise şöyle yapabilirsin
SoapObject response2 =(SoapObject)envelope.bodyIn;
bunun sonucu ne gelecek bak bakalım..
Abi java da düzgün çalışıyor kod sıkıntı yok yani :( android studio da çalıştırınca böyle bi hata alıyorum . Internetteki Free Servisleri denedim gene aynı muhabbet oluyor Eclipsede Java COnsole yazıyorum çekiyor orda :( burda çekmiyor kütüphane güncel değil diye güncelledim gene olmadı nedeni ne bilmiyorum :(
EDİT :@unbalanced denedim abi gene aynı hatayı veriyor SoapObject null döndü gene
MhmdAlmz tarafından 26/Şub/16 23:29 tarihinde düzenlenmiştir -
bu iki satırı commente alıp dener misin
httpTransport.setXmlVersionTag("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
httpTransport.debug=true;+ hala catch den gelen hatayı söylemedin hocam, senin kodun oraya girmesi lazım.
-
@unbalanced abi null geliyor Log çıktısı bu;
02-26 16:35:06.176 27540-27540/com.mhmdalmz.example.worlddeck E/Get Error: null
Log kodu da bu ;
Log.e("Get Error ", e.getMessage() + " );
Commente almama rağmen gene birşey olmadı :( hala aynı şey null değer dönüyorhttpTransport.call(SOAP_ACTION, envelope); Şu kodu açıklama satırı yaptığımda null hatası almıyorum bu satırda bi sıkıntı var abim
MhmdAlmz tarafından 27/Şub/16 00:00 tarihinde düzenlenmiştir -
e.getmessage yerine direk e yaz hocam bakalım..
ancak şu satırı da şöyle yap
Object result = envelope.getResponse();
if(result !=null)
response = (SoapPrimitive) envelope.getResponse();
bu şekilde öyle exception vermez bakalım sorun ne.
edit: açıklamaya aldığım dediğin şey metodu çağıran kısım ..
unbalanced tarafından 27/Şub/16 00:05 tarihinde düzenlenmiştir -
unbalanced bunu yazdı
e.getmessage yerine direk e yaz hocam bakalım..
ancak şu satırı da şöyle yap
Object result = envelope.getResponse();
if(result !=null)
response = (SoapPrimitive) envelope.getResponse();
bu şekilde öyle exception vermez bakalım sorun ne.
edit: açıklamaya aldığım dediğin şey metodu çağıran kısım ..
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
Sorunun Cevabı bu abi :( -
çalıştı mı ?
-
Evet abi Fragment de çalışıyordum MainActivity de ekli Bu kod Fragmentlere de eklenmeliymiş neyse bu günü de karlı kapattık :) Main Thread dışında bir yerde Internet ile alakalı postlar için izin istiyorduk onu eklememişim Fragment'e Metod olarak çağırıyordum izinleri öyle olmuyormuş birda ayrı yazayım dedim oldu :) izin olmadığı için Servisi çağıramıyormuş sanırım
-
hocam bu tarz fonksiyonları ayrı bir thread ile çalıştırman lazım, o bahsettiğin şeyi eklemen gerek yok.. kodunun tamamını görmediğim için ekledin diye düşündün.. bunla ilgili örneklere bakarsan threadlerden extend edildiğini göreceksin.
kolay gelsin