Son Forum Aktiviteleri

7
Tümünü Gör

Android ile wcf service bağlanmak

Arkadaşlar merhaba,

Birkaç gündür bu konuyla ilgili araştırma yapıyorum. Ksoap2 kütüphanesini kullanarak wcf servise bağlanmaya çalışıyorum. Kendi lokalimde de Visual Studio da bir wcf service oluşturuyorum ama bir türlü android tarafında nasıl yapacağımı bilemiyorum. Bağlanmaya çalışırken kullandığım kodlar ise şöyle:

private static final String URL ="http://10.0.2.2:34215/MyWebService.svc";

    private static final String NAMESPACE = "http://tempuri.org/";

    public static String WebServicesCall(ModelClass1 c1,ModelClass2 c2){

        String cevap="";

        String METHOD = "GetData";
        String SOAP_ACTION = NAMESPACE+METHOD;

        try {

            SoapObject request = new SoapObject(NAMESPACE, METHOD);

            PropertyInfo paramC1=new PropertyInfo();
            paramDoc.setName("c1");
            paramDoc.setType(c1.getClass());
            paramDoc.setValue(c1);

            request.addProperty(paramC1);

            PropertyInfo paramC2=new PropertyInfo();
            paramId.setName("c2");
            paramId.setType(c2.getClass());
            paramId.setValue(c2);

            request.addProperty(paramC2);

            SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
            envelope.dotNet=true;
            envelope.setOutputSoapObject(request);

            envelope.addMapping(NAMESPACE, "ModelClass1", new ModelClass1().getClass());
            envelope.addMapping(NAMESPACE,"ModelClass2",new ModelClass2().getClass());

            HttpTransportSE transport = new HttpTransportSE(URL);

            try {

                transport.call(SOAP_ACTION, envelope);

                Object response=(Object)envelope.getResponse();

                //SoapPrimitive response = (SoapPrimitive)envelope.getResponse();
                //cevap=response.toString();

                Log.e(TAG,response.toString());

            } catch (IOException e) {
                e.printStackTrace();
            } catch (XmlPullParserException e) {
                e.printStackTrace();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return cevap;
    }

 

9 yıl 2 ay önce yanıtladın

Android web servislerle authentication işlemleri

19 Mart 2019 tarihinde cevaplandı
Merhaba, Aslında token nin amacı minimum kullanıcı verisiyle cihazı servis ile haberlestirmek. Yani gerekmedikce cihazın bir şey bilmemesi. Eğer kullanıcı id si lazımsa server daki session state te tutmak. Tabi hangi kullanıcıdan istek geldiğini anlamak için cihaz ilgili token ile istek atmalıdır. Activityler arasında ise veri taşımak yerine preference da verileri tutabilirsiniz.

Android web servislerle authentication işlemleri

19 Mart 2019 tarihinde cevaplandı
Merhaba, Aslında token nin amacı minimum kullanıcı verisiyle cihazı servis ile haberlestirmek. Yani gerekmedikce cihazın bir şey bilmemesi. Eğer kullanıcı id si lazımsa server daki session state te tutmak. Tabi hangi kullanıcıdan istek geldiğini anlamak için cihaz ilgili token ile istek atmalıdır. Activityler arasında ise veri taşımak yerine preference da verileri tutabilirsiniz.

Android web servislerle authentication işlemleri

18 Mart 2019 tarihinde cevaplandı
Merhaba , Aslında login ve authentication için bir kaç yöntem olmakla beraber en kolay ve kullanışlı yöntem bir token üreterek haberlestirmen. Kullanıcı login olurken web servis tarafında bir token üretip login başarılı olduğunda cihaza dönersin. Sonrasında web servis ile haberlesirken isteklerinde o token i kullanabilirsin.Boylece her oturumda yeni bir token alarak oturumu daha güvenli hale getirebilirsin.

Android'de soap web servisten class veri çekme

Merhaba,

Bunun için Android de Ksoap kütüphanesini kullanabilirsin. Ya da istersen Java daki HttpPost sınıfını kullanarak SOAP servsisin beklediği örüntüde bir xml kullanarak HTTP protokülü ile haberleştirebilirsin. Eğer çekmek istediğin response daki alan sayısı az ise HttpPost classını kullanmanı öneririm. Ksoap bazen sıkıntı yaratabiliyor servis erişimlerinde. Aşağıdaki link üzerinden ksoap ile ilgli bir yazı paylaşıyorum. Umarım işinizi görür.

http://www.oguzozkeroglu.com/android-ksoap2-kullanarak-webservislere-erisme/

 

Android ile wcf service bağlanmak

16 Ağustos 2015 tarihinde cevaplandı

Gürkan bey aldığım hata şu şekilde :

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<s:Fault>
<faultcode xmlns:a="http://schemas.microsoft.com/net/2005/12/windowscommunicationfoundation/dispatcher">
<a:DeserializationFailed/>
</faultcode>
<faultstring xml:lang="tr-TR">İleti serisi kaldırılmaya çalışılırken biçimlendirici bir özel durum gönderdi:
 http://tempuri.org/:newModel parametresi serisi kaldırılmaya çalışılırken bir hata oluştu. 
 InnerException iletisi: '1. satır 346. konumda hata. 'http://tempuri.org/:newModel'
 öğesi, 'http://tempuri.org/:Model' adıyla eşlenen bir türe ait veriler içeriyor. 
 Seri kaldırıcı bu adla eşlenen herhangi bir tür hakkında bilgi sahibi değil. 
 Bir DataContractResolver kullanmayı deneyin veya 'Model' öğesine karşılık 
 gelen türü bilinen türler listesine ekleyin (örneğin KnownTypeAttribute 
 özniteliğini kullanarak ya da bunu DataContractSerializer öğesine geçirilen bilinen türler listesine ekleyerek).
 '. Daha fazla ayrıntı için InnerException öğesine bakın.
</faultstring>
 </s:Envelope>

 

Ayrıca kullandığım ksoap2 kütüphanesindendir diye düşündüm. Bu yüzden kütüphane ile değil de json parse ederek bağlanmayı deneyeyim dedim. Bu sefer de aşağıdaki hatayı alıyorum. Linki kontrol ediyorum doğru çalışıyor. Emületörde oluşturduğum linki debug ederken alıp tarayıcıya yapıştırıyorum doğru bi şekilde sonucu json olarak döndürüyor. 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
    <HTML><HEAD><TITLE>Bad Request</TITLE>
    <META HTTP-EQUIV="Content-Type" Content="text/html; charset=us-ascii"></HEAD>
    <BODY><h2>Bad Request - Invalid Hostname</h2>
    <hr><p>HTTP Error 400. The request hostname is invalid.</p>
    </BODY></HTML>

NOT :

Emületörde kullandığım link şöyle :  http://10.0.2.2:51220/Service1.svc/checkLogin?name=a&pass=1

Taraycıya yapıştırdığım link :  http://localhost:51220/Service1.svc/checkLogin?name=a&pass=1