从Android客户端调用Web服务

时间:2011-10-12 10:44:00

标签: android wcf

我有点麻烦。我正在同时做我的第一个Android应用程序和第一个WCF服务。 请跟我一起裸... 我有以下服务合同:

[ServiceContract]
    public interface ILoginService
    {

        [OperationContract]
        string Login(string username, string password);

        // TODO: Add your service operations here
    }

我想从我的Android应用程序中调用它并传入用户名和密码参数。 这份经营合同是否适合这份工作? 2.有人可以指点我如何通过Android调用此WCF服务的教程/代码示例吗?

谢谢!

编辑:我可能会更近一点,但我还是迷路了。 这是我到目前为止: 合同:

[OperationContract]
        [WebGet(ResponseFormat= WebMessageFormat.Json,
            UriTemplate="/LoginService/?username={username}&password={password}")]
        Response Login(string username, string password);

然后我用Android调用该服务:

public LoginResponse RemoteLogin(String username, String password)
    {
        loginParameters = "/LoginService/username=" + username + "&password=" + password;


        HttpClient httpclient = new DefaultHttpClient();
        HttpGet httpget = new HttpGet(serviceAddress + loginParameters);

        HttpResponse response;

        LoginResponse loginResponse = null;

        try
        {
            response = httpclient.execute(httpget);

            HttpEntity entity = response.getEntity();

            if(entity != null)
            {
                InputStream instream = entity.getContent();
                String result = convertStreamToString(instream);
                JSONObject json = new JSONObject(result);

                // Parsing
                JSONArray nameArray = json.names();
                JSONArray valArray = json.toJSONArray(nameArray);

                loginResponse = new LoginResponse(valArray.getBoolean(1), valArray.getString(0), valArray.getString(2));


                instream.close();
            }

        }
        catch(Exception e)
        {
            loginResponse = new LoginResponse();
            String sDummy = e.toString();
        }
        return loginResponse;
    }

我现在不知道出了什么问题。

1 个答案:

答案 0 :(得分:0)

没有真正解决问题,只是采取了一些措施。 我从web.config中删除了与ServiceModel有关的任何内容,并将一个ServiceHostFactory指令添加到SVC文件中。这就是诀窍。现在一切正常。它一定是某种配置问题。