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