https://loginter.moveon.pro/?rest_route=/simple-jwt-login/v1/auth&email=email&password=密码
并得到如下所示的JSON:
{"success":false,"data":{"message":"Wrong user credentials.","errorCode":48}}
我正在Android Studio上使用Volley库。
在应用程序build.gradle build.gradle Volley依赖项中安装了Volley
在my manifest.xml manifest.xml Internet和NETWROK State中授权Internet和NETWROK State
做了一个非常基本的登录屏幕作为主要活动
c.使用扩展请求的新的“帮助”类。我读到这里。
我的问题是什么:
我找不到一种方法来传递我的参数到POST URL...调试时,我将Volley的“murl”作为基本URL(https://logineter.moveon.pro/),而不是添加了参数的URL(https://logineter.moveon.pro/?rest_route=/simple-jwt-login/v1/auth&email=email&password=password)。
这是我的代码...为了测试不同的方法,我使用了一个愚蠢的“if”,不要在这个问题上责备我太多;-)...而且在想要发送的参数中有很多冗余。
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ProgressBar;
import com.android.volley.AuthFailureError;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.Response.Listener;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonObjectRequest;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.HashMap;
import java.util.Map;
public class MainActivity extends AppCompatActivity {
/**
* Logcat tag
*/
private static final String TAG = MainActivity.class.getSimpleName();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final EditText usernameEditText = findViewById(R.id.username);
final EditText passwordEditText = findViewById(R.id.password);
final Button loginButton = findViewById(R.id.login);
final ProgressBar loadingProgressBar = findViewById(R.id.loading);
loginButton.setOnClickListener(new View.OnClickListener() {
private static final String URL_LOGIN = "http://logintest.moveon.pro";
//private static final String URL_LOGIN = "http://logintest.moveon.pro/?rest_route=/simple-jwt-login/v1/auth&email=Email&password=Password";
private static final String route = "/simple-jwt-login/v1/auth";
@Override
public void onClick(View v) {
// Build the request payload -- tried not working better
final JSONObject jsonObject = new JSONObject();
try {
jsonObject.put("rest_route", "/simple-jwt-login/v1/auth");
jsonObject.put("email", "john@domain.com");
jsonObject.put("password", "ghjghjk");
} catch (JSONException e) {
e.printStackTrace();
}
// Instantiate the RequestQueue.
RequestQueue queue = Volley.newRequestQueue(getApplicationContext());
//Tried different ways of sending the request :
//String url = "http://logintest.moveon.pro/?rest_route=/simple-jwt-login/v1/auth&email=Email&password=Password";
//String url = "http://logintest.moveon.pro/wp-json/?rest_route=/simple-jwt-login/v1/auth&email=Email&password=Password";
String url = "http://logintest.moveon.pro/";
int test = 3;
if (test == 0) {
// Request a string response from the provided URL.
StringRequest sr = new StringRequest(Request.Method.POST, url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.e("HttpClient", "success! response: " + response.toString());
// Display the first 500 characters of the response string.
usernameEditText.setText("Response is: " + response.toString().substring(0, 500));
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
usernameEditText.setText("That didn't work!");
Log.e("HttpClient", "error: " + error.toString());
}
}) {
@Override
protected Map<String, String> getParams() {
Map<String, String> params = new HashMap<String, String>();
params.put("rest_route", "/simple-jwt-login/v1/auth");
params.put("email", "asdasd");
params.put("password", "ghjghjk");
return params;
}
//Tried with adding params in Body... but not working better
@Override
public byte[] getBody() throws AuthFailureError {
HashMap<String, String> params2 = new HashMap<String, String>();
params2.put("rest_route", "/simple-jwt-login/v1/auth");
params2.put("email", "john@domain.com");
params2.put("password", "ghjghjk");
return new JSONObject(params2).toString().getBytes();
}
//Tried defining the Body content in different ways... but not working better
@Override
public String getBodyContentType() {
return "application/json; charset=UTF-8";
}
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
HashMap<String, String> headers = new HashMap<String, String>();
//headers.put("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
//headers.put("Content-Type","application/x-www-form-urlencoded");
headers.put("Content-Type", "application/json; charset=UTF-8");
return headers;
}
};
// Add the request to the RequestQueue.
queue.add(sr);
} else if (test == 1) {
Map<String, String> params = new HashMap<String, String>();
params.put("rest_route", "/simple-jwt-login/v1/auth");
params.put("email", "asdasd");
params.put("password", "ghjghjk");
JSONObject parameters = new JSONObject(params);
// Request a string response from the provided URL.
JsonObjectRequest stringRequest1 = new JsonObjectRequest(Request.Method.POST, url, parameters,
new Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
// Display the first 500 characters of the response string.
usernameEditText.setText("Response is: " + response.toString().substring(0, 500));
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
usernameEditText.setText("That didn't work!");
}
}) {
@Override
protected Map<String, String> getParams() {
Map<String, String> params = new HashMap<String, String>();
params.put("rest_route", "/simple-jwt-login/v1/auth");
params.put("email", "asdasd");
params.put("password", "ghjghjk");
return params;
}
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
HashMap<String, String> headers = new HashMap<String, String>();
headers.put("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
//headers.put("Content-Type", "application/json");
return headers;
}
};
// Add the request to the RequestQueue.
queue.add(stringRequest1);
} else if (test == 3) {
Map<String, String> params = new HashMap();
params.put("rest_route", "/simple-jwt-login/v1/auth");
params.put("email", "john@domain.com");
params.put("password", "ghjghjk");
CustomVolleyRequest strReq = new CustomVolleyRequest(Request.Method.POST, url, params, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.e("HttpClient", "success! response: " + response.toString());
// Display the first 500 characters of the response string.
usernameEditText.setText("Response is: " + response.toString().substring(0, 500));
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
usernameEditText.setText("That didn't work!");
Log.e("HttpClient", "error: " + error.toString());
}
}) ;
}
}
});
}
}
这里还有我从前面提到的帖子中获得的“帮手”类:
package com.example.logintest;
import java.io.UnsupportedEncodingException;
import java.util.Map;
import org.json.JSONException;
import org.json.JSONObject;
import com.android.volley.NetworkResponse;
import com.android.volley.ParseError;
import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.Response.ErrorListener;
import com.android.volley.Response.Listener;
import com.android.volley.toolbox.HttpHeaderParser;
public class CustomVolleyRequest extends Request<JSONObject> {
private Listener<JSONObject> listener;
private Map<String, String> params;
public CustomVolleyRequest(String url, Map<String, String> params, Listener<JSONObject> responseListener, ErrorListener errorListener) {
super(Method.GET, url, errorListener);
this.listener = responseListener;
this.params = params;
}
public CustomVolleyRequest(int method, String url, Map<String, String> params, Listener<JSONObject> responseListener, ErrorListener errorListener) {
super(method, url, errorListener);
this.listener = responseListener;
this.params = params;
}
protected Map<String, String> getParams()
throws com.android.volley.AuthFailureError {
return params;
}
@Override
protected Response<JSONObject> parseNetworkResponse(NetworkResponse response) {
try {
String jsonString = new String(response.data,
HttpHeaderParser.parseCharset(response.headers));
return Response.success(new JSONObject(jsonString),
HttpHeaderParser.parseCacheHeaders(response));
} catch (UnsupportedEncodingException e) {
return Response.error(new ParseError(e));
} catch (JSONException je) {
return Response.error(new ParseError(je));
}
}
@Override
protected void deliverResponse(JSONObject response) {
// TODO Auto-generated method stub
listener.onResponse(response);
}
}
您可以通过以下方式发送x-www-form-urlencoded请求:
您可以查看以下内容以供参考:https://developer.mozilla.org/en-us/docs/web/http/methods/post
问题内容: 这是我的Java代码: 我这样称呼它: 问题是呼叫保持发布零零零,似乎我没有正确传递x和y。 更新资料 回答之后,我将请求更改为: 服务是: 但我仍然有同样的问题。这是服务器的响应: 您可以在末尾看到零:( 问题答案: (请注意,不是)是表单数据()向其发送了请求的正文,其中您的资源方法应更像 并且以下请求将起作用 注意: 在Windows中,必须使用双引号() 您甚至可以分离键值对
问题内容: 我可以将数组作为url参数传递的最佳方法是什么?我在想这是否可能: 还是这样: 香港专业教育学院阅读示例,但我发现它很混乱: 问题答案: 有一个非常简单的解决方案:。它把您的查询参数作为一个关联数组: 将返回 为您处理所有必需的转义(=> 和=> ),因此此字符串等于。
问题内容: 通过GET参数传递原始base64编码的字符串是否安全? 问题答案: 不,您需要对其进行url编码,因为base64字符串可以包含“ +”,“ =”和“ /”字符,这可能会改变数据的含义-看起来像一个子文件夹。 有效的base64字符如下。
嗨,我想从一个页面移动到另一个页面,并传递paramters和。如果URL中没有这些参数,我可以用react router实现这一点吗? 我正在使用查看https://github.com/rackt/react-router/blob/master/docs/guides/overview.md#dynamic-segments和解决方案,但在将params传递给URL之前,它无法工作。 编辑1
问题内容: 我在传递带有ajax url的参数时遇到问题。我认为错误在于参数代码语法。请帮助。 我正在按以下方式访问这些参数 问题答案: 为什么要结合GET和POST?使用一个或另一个。 的PHP: 或者,只需正确格式化您的请求即可(您缺少get参数的“&”号)。
问题内容: 我已经在Angular 2中创建了一个单页抵押计算器应用程序,它对我来说就像一个学习游乐场(试图让更多的人习惯于当前在工作中使用的技术堆栈)…它运行在http://www.mortgagecalculator123.com如果你想看看。如果您想查看它,可以在页面上通过Fork Me链接将其开源。 无论如何,我想做的就是能够直接从URL将变量传递到我的应用程序,以便我的Angular 2