我正在尝试使用用户凭据向远程服务器发送呼叫,并返回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();
}
有谁知道如何从服务器获取输出而不是我现在回来的这些东西?
谢谢!
答案 0 :(得分:1)
令人惊讶的是,您发布的代码可以在我的独立Java客户端以及我的Android应用程序中运行。服务器部分似乎有问题。你能从服务器发布任何额外的输出吗?
在服务器上我有一个servlet,它以JSON格式接收用户和密码,并以json格式返回验证结果。
答案 1 :(得分:1)
首先,您将用户名和密码作为URL编码参数http://.../?username=abc&password=test
和HTTP请求标头发送。
查看服务文档以查看预期用户名和密码的位置。
可能是您的服务使用HTTP基本身份验证?如果是这样,请在HTTP身份验证下查看http://developer.android.com/reference/java/net/HttpURLConnection.html上的Android文档。
PS:记得在使用后断开连接()连接,以便释放资源。
答案 2 :(得分:1)
另一个解决方案是使用HTTPClient
可能的情况就是这样:
HttpClient httpClient = new DefaultHttpClient();
HttpPost request = new HttpPost(yoururlhere);
HttpResponse response = httpClient.execute(request);
respondEntity = EntityUtils.toString(response.getEntity());
这也可以根据您的需要与HttpGet
一起使用。也许这会让你清楚地了解服务器“真正”的内容。