gpt4 book ai didi

java - 如何在android volley中隐藏Url或参数值?

转载 作者:行者123 更新时间:2023-12-01 06:08:11 24 4
gpt4 key购买 nike

我在我的应用程序中使用 Volley 库,一切正常,但当我发送请求时,我可以看到以下内容

  • 我的服务器的完整网址

  • 参数名称

  • 和其他值。

我还用 Kali linux 中的 Ettercap 工具检查了它,它也显示了同样的结果。我现在的问题是如何向用户隐藏这一点?

String url ="http://*******.com/login";


StringRequest strReq = new StringRequest(Request.Method.POST,
url, new Response.Listener<String>() {

@Override
public void onResponse(String response) {
Log.d(TAG, "Login Response: " + response.toString());
hideDialog();

try {
JSONObject jObj = new JSONObject(response);
boolean error = jObj.getBoolean("error");

// Check for error node in json
if (!error) {
// user successfully logged in
// Create login session

// Now store the user in SQLite
String name = jObj.getString("name");
String email = jObj.getString("email");
String api = jObj.getString("apikey");


} else {
// Error in login. Get the error message
String errorMsg = jObj.getString("message");
Toast.makeText(getApplicationContext(),
errorMsg, Toast.LENGTH_LONG).show();
}
} catch (JSONException e) {
// JSON error
e.printStackTrace();
Toast.makeText(getApplicationContext(), "Json error: " + e.getMessage(), Toast.LENGTH_LONG).show();
}

}
}, new Response.ErrorListener() {

@Override
public void onErrorResponse(VolleyError error) {
Log.e(TAG, "Login Error: " + error.getMessage());
Toast.makeText(getApplicationContext(),
error.getMessage(), Toast.LENGTH_LONG).show();
hideDialog();
}
}) {

@Override
protected Map<String, String> getParams() {
// Posting parameters to login url
Map<String, String> params = new HashMap<String, String>();
params.put("email", email);
params.put("password", password);

return params;
}


};

// Adding request to request queue
MyApplication.getInstance().addToRequestQueue(strReq, tag_string_req);
}

这是我在 Kali linux 中调试器和 Ettercap 的结果。

Email: somthings@yahoo.com Pass:somthing INFO:http://****/mypath/login CONTENT:email=somthings@yahoo.com&password=somthing&

最佳答案

由于我能够重现该问题,因此我在这里考虑了 2 个可能的答案:

1 :使用 getHeaders() 而不是 getParams(),因为这是添加 header 值的正确位置。检查下面的示例。

  @Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> params = new HashMap<String, String>();
params.put("email", email);
params.put("password", password);

return params;
}

注意: getHeaders()public

2:使用 JsonObjectRequest 而不是 StringRequest,为什么?我猜您期望的是正文值而不是 header 值。

JSONObject requestBody = new JSONObject();
requestBody.put("email", email);
requestBody.put("password", password);

JsonObjectRequest strReq = new JsonObjectRequest(Request.Method.POST,
url,requestBody, new Response.Listener<JSONObject>() {

... More code here

} ...

关于java - 如何在android volley中隐藏Url或参数值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40557788/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com