Android从远程服务器调用获得意外响应

Android从远程服务器调用获得意外响应,android,Android,我正在尝试使用用户凭据向远程服务器发送呼叫,并返回人员凭据是否匹配的true/false。但是我的代码正在JSON lol中将凭证返回给我 try { String query = String.format("login=%s&password=%s", URLEncoder.encode(myEmail, charset),

我正在尝试使用用户凭据向远程服务器发送呼叫,并返回人员凭据是否匹配的true/false。但是我的代码正在JSON lol中将凭证返回给我

        try 
        {               
            String query = String.format("login=%s&password=%s", 
                     URLEncoder.encode(myEmail, charset), 
                     URLEncoder.encode(myPassword, charset));

            final URL url = new URL( myUrl + "?" + query );



            final HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setDoOutput(true); 
            conn.setRequestMethod("POST");

            conn.setRequestProperty("login", myEmail);
            conn.setRequestProperty("password", myPassword);

            conn.setUseCaches(false);

            final InputStream is = conn.getInputStream();
            final byte[] buffer = new byte[8196];
            int readCount;
            final StringBuilder builder = new StringBuilder();
            while ((readCount = is.read(buffer)) > -1) 
            {
                builder.append(new String(buffer, 0, readCount));
            }

            response = builder.toString();      
            Log.d( "After call, response: " , " " + response);
        } 
        catch (Exception e) 
        {
                Log.d( "Exception: " , "Yup");
                e.printStackTrace();
        }
有人知道我如何从服务器上获得输出,而不是我现在得到的东西吗


谢谢

令人惊讶的是,您发布的代码在我的独立java客户端和我的android应用程序中都有效。服务器部分似乎有问题。你能从服务器上发布任何额外的输出吗


在服务器上,我有一个servlet,它接收JSON格式的用户和密码,并返回JSON格式的验证结果。

令人惊讶的是,您发布的代码在我的独立java客户端以及我的android应用程序中都有效。服务器部分似乎有问题。你能从服务器上发布任何额外的输出吗


在服务器上,我有一个servlet,它接收JSON格式的用户和密码,并返回JSON格式的验证结果。

首先,您将用户名和密码都作为URL编码参数发送
http://.../?username=abc&password=test
和作为HTTP请求头。 检查服务文档,查看用户名和密码的预期位置。 您的服务是否使用HTTP基本身份验证?如果是这样,请查看HTTP认证下的Android文档


PS:请记住在使用后断开连接(),以便释放资源。

首先,您将用户名和密码都作为URL编码参数发送
http://.../?username=abc&password=test
和作为HTTP请求头。 检查服务文档,查看用户名和密码的预期位置。 您的服务是否使用HTTP基本身份验证?如果是这样,请查看HTTP认证下的Android文档


PS:请记住在使用后断开连接(),以便释放资源。

另一种解决方案是使用
HTTPClient
一种可能的情况如下:

HttpClient httpClient = new DefaultHttpClient();
HttpPost request = new HttpPost(yoururlhere);
HttpResponse response = httpClient.execute(request);
respondEntity = EntityUtils.toString(response.getEntity());

这也可以根据您的需要使用
HttpGet
。也许这会让您更清楚地了解服务器“真正”的功能。

另一种解决方案是使用
HTTPClient
一种可能的情况如下:

HttpClient httpClient = new DefaultHttpClient();
HttpPost request = new HttpPost(yoururlhere);
HttpResponse response = httpClient.execute(request);
respondEntity = EntityUtils.toString(response.getEntity());

这也可以根据您的需要使用
HttpGet
。也许这会让你更清楚地了解服务器的“真正”功能。

检查CRest Chrome浏览器应用程序中的服务。@Sadeshkumar Periyasamy你是什么意思?我该怎么做?:)谢谢这是一个用于测试Rest Web服务的Chrome网络商店应用程序。请在CRest Chrome浏览器应用程序中检查该服务。@Sadeshkumar Periyasamy你是什么意思?我该怎么做?:)谢谢这是一个用于测试Rest Web服务的Chrome Web Store应用程序。服务器返回:03-07 04:48:46.933:D/Post-execute:(1634):在Post-execute方法中:数组(2){03-07 04:48:46.933:D/Post-execute:(1634):[“login”=>03-07 04:48:46.933:D/Post-execute:(1634):[“password”]=>03-07 04:48:46.933:D/后执行:(1634):字符串(7)“密码”03-07 04:48:46.933:D/后执行:(1634):}调用服务器时会打印此信息??您可以检查服务器返回的内容吗?服务器只打印“是”或“否”以确定是否登录:)服务器是否可以从internet访问,以便我可以呼叫服务并检查数据??或者你可以从你的浏览器中调用该服务,然后查看正在打印的浏览器(如果它支持GET)是的,服务器也是。我想我已经意识到了问题所在。返回JSON时,将随服务器返回的值一起发送参数。在Android代码中,有没有办法将两者解耦?服务器返回:03-07 04:48:46.933:D/Post-execute:(1634):在Post-execute方法中:array(2){03-07 04:48:46.933:D/Post-execute:(1634):[“login”=>03-07 04:48:46.933:D/Post-execute:(1634):string(24)“alogin_string”03-07 04:48:46.933:D/Post-execute:[“password”]=>03-07 04:48:46.933:D/后执行:(1634):字符串(7)“密码”03-07 04:48:46.933:D/后执行:(1634):}调用服务器时会打印此信息??您可以检查服务器返回的内容吗?服务器只打印“是”或“否”以确定是否登录:)服务器是否可以从internet访问,以便我可以呼叫服务并检查数据??或者你可以从你的浏览器中调用该服务,然后查看正在打印的浏览器(如果它支持GET)是的,服务器也是。我想我已经意识到了问题所在。返回JSON时,将随服务器返回的值一起发送参数。在Android代码中有没有办法将两者解耦?