SORU
21 Mart 2009, CUMARTESİ


Nasıl Android ile XML Hizmetini kullanmak için

Server yaratıyorum .NET ve Android için bir istemci uygulaması. Kullanıcı adı ve parola sunucuya gönderen bir kimlik doğrulama yöntemi uygulamak istiyorum ve bir sunucu oturumu bir dize gönderir.

Çok teşekkür ettim. yani XML aşina değilim.

Java'da aşağıdaki yöntemi yazdım:

private void Login()
{
  HttpClient httpClient = new DefaultHttpClient();
  try
  {
      String url = "http://192.168.1.5:8000/Login?username=test&password=test";

    HttpGet method = new HttpGet( new URI(url) );
    HttpResponse response = httpClient.execute(method);
    if ( response != null )
    {
      Log.i( "login", "received "   getResponse(response.getEntity()) );
    }
    else
    {
      Log.i( "login", "got a null response" );
    }
  } catch (IOException e) {
    Log.e( "error", e.getMessage() );
  } catch (URISyntaxException e) {
    Log.e( "error", e.getMessage() );
  }
}

private String getResponse( HttpEntity entity )
{
  String response = "";

  try
  {
    int length = ( int ) entity.getContentLength();
    StringBuffer sb = new StringBuffer( length );
    InputStreamReader isr = new InputStreamReader( entity.getContent(), "UTF-8" );
    char buff[] = new char[length];
    int cnt;
    while ( ( cnt = isr.read( buff, 0, length - 1 ) ) > 0 )
    {
      sb.append( buff, 0, cnt );
    }

      response = sb.toString();
      isr.close();
  } catch ( IOException ioe ) {
    ioe.printStackTrace();
  }

  return response;
}

Ama sunucu tarafında şimdiye kadar bir şey bulamadım.

Eğer herkes uygun yöntem bir dize Giriş(string username, string password) uygun bir Uygulama ile oluşturmak için nasıl açıklamak, gerçekten minnettar olurum.istemciden bu iki parametre okumak ve oturum dize ile yanıt vermek için uygun [OperationContract] imza ayarları ve Arayüz yapılandırma.

Teşekkürler!

CEVAP
24 Mart 2009, Salı


XML ile başlamak için, en kolay yöntem web hizmet bağlantıları için varsayılan biçim SOAP ve HTTP POST (daha fazla) kullanmak olabilir. En kolay HTTP çalışma almak için bağlayıcı"". basicHttpBinding. Burada ServiceContract/OperationContract girişiniz için hizmet gibi görünebilir ne bir örnek

[ServiceContract(Namespace="http://mycompany.com/LoginService")]
public interface ILoginService
{
    [OperationContract]
    string Login(string username, string password);
}

Hizmet uygulama şöyle:

public class LoginService : ILoginService
{
    public string Login(string username, string password)
    {
        // Do something with username, password to get/create sessionId
        // string sessionId = "12345678";
        string sessionId = OperationContext.Current.SessionId;

        return sessionId;
    }
}

Bir windows hizmeti bir ServiceHost kullanarak bu ev sahibi veya ASP.NET web (hizmet) normal bir uygulama gibi IIS içinde barındırabilir. Bunların ikisi için öğreticiler bir yeri vardır.

XML hizmeti yapılandırma şöyle olabilir:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>


    <system.serviceModel>
        <behaviors>
            <serviceBehaviors>
                <behavior name="LoginServiceBehavior">
                    <serviceMetadata />
                </behavior>
            </serviceBehaviors>
        </behaviors>

        <services>
            <service name="WcfTest.LoginService"
                     behaviorConfiguration="LoginServiceBehavior" >
                <host>
                    <baseAddresses>
                        <add baseAddress="http://somesite.com:55555/LoginService/" />
                    </baseAddresses>
                </host>
                <endpoint name="LoginService"
                          address=""
                          binding="basicHttpBinding"
                          contract="WcfTest.ILoginService" />

                <endpoint name="LoginServiceMex"
                          address="mex"
                          binding="mexHttpBinding"
                          contract="IMetadataExchange" />
            </service>
        </services>
    </system.serviceModel>
</configuration>

(MEX malzeme üretimi için isteğe bağlıdır, ama WcfTestClient.exe ve hizmet meta-veri) teşhir için test için gereklidir.

Hizmet için SABUN mesaj gönderebilmek için Java kodunuzu değiştirmek zorunda kalacaksın. XML arası çalışırken biraz seçici olmayan XML müşterilerle olabilir, posta başlıkları ile ortalığı biraz işe almak gerekecek. Bir kez olsun bu çalışan, sonra başlatmak için araştırmak için güvenlik giriş (belki de kullanmak farklı bir bağlama almak daha iyi güvenlik), ya da muhtemelen kullanarak XML oturmasını sağlamak için oturumu ile ALMAK yerine SABUN/POST.

Burada HTTP POST Java kodu gibi görünmelidir ne bir örnek. Bir araç "Fiddler" Bu hata ayıklama için çok yararlı olabilir web hizmetleri. " vardır

POST /LoginService HTTP/1.1
Content-Type: text/xml; charset=utf-8
SOAPAction: "http://mycompany.com/LoginService/ILoginService/Login"
Host: somesite.com:55555
Content-Length: 216
Expect: 100-continue
Connection: Keep-Alive

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<Login xmlns="http://mycompany.com/LoginService">
<username>Blah</username>
<password>Blah2</password>
</Login>
</s:Body>
</s:Envelope>

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Elliot Davin

    Elliot Davin

    28 Kasım 2008
  • ExcelTutorials

    ExcelTutoria

    2 Mayıs 2009
  • UrAvgConsumer

    UrAvgConsume

    1 Ocak 2012