Soru & Cevap

Android ile wcf service bağlanmak

10.08.2015 - 07:56

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;
    }

 

99 Görüntülenme

2 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

Profile picture for user yunus.sntrk
yunus.sntrk
16.08.2015 - 09:45

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

picture-7889-1383515740.jpg
gurkanmustafacakir
11.08.2015 - 03:21

Bir hata gözükmüyor verdiğiniz kodlarda. Ne gibi bir hata alıyorsunuz neresinde takıldınız ?