java - 使用 Volley 传递参数和标头
问题描述
我正在尝试使用 twitter 进行身份验证并使用 Volley 请求在应用程序中显示我的 twitter 提要。如果我用我想使用 getParam() 方法分配的参数分配我的字符串 URL,我可以在哪里执行此操作。但是,如果我在没有额外参数的情况下设置 URL 并使用 getParam()。它以 401 失败?
public class MainActivity extends AppCompatActivity {
private ArrayList<MyTweet> tweets = new ArrayList<MyTweet>();
private TextView post_reponse_text;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button post_request_button = findViewById(R.id.test);
post_reponse_text = findViewById(R.id.get_response_data);
post_request_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
postRequest();
}
});
}
private void postRequest() {
RequestQueue queue = Volley.newRequestQueue(MainActivity.this);
//String url = "https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=realScreenName";
String url = "https://api.twitter.com/1.1/statuses/user_timeline.json";
final StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
// post_reponse_text.setText("Post Data : " + response);
post_reponse_text.setText("Twitter Feed");
JSONArray jsonArray = new JSONArray(response);
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject session = jsonArray.getJSONObject(i);
MyTweet tweet = new MyTweet("might need to remove", "this also");
tweet.content = session.getString("text");
tweet.author = session.getString("id_str");
tweets.add(tweet);
}
/*Send to Adapter*/
RecyclerView recyclerView = findViewById(R.id.my_recycler_view);
RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getApplicationContext());
recyclerView.setLayoutManager(layoutManager);
MyTweetsAdapter Adapter = new MyTweetsAdapter(tweets);
recyclerView.setAdapter(Adapter);
} catch (Exception e) {
e.printStackTrace();
Log.v("Error:", "Error Creating JSON object");
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
post_reponse_text.setText("Failed to find Twitter feed");
}
})
{
@Override
protected Map<String, String> getParams() {
Map<String, String> params = new HashMap <String, String>();
String name = "realScreenName";
params.put("screen_name", name);
return params;
}
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> params = new HashMap<String, String>();
params.put("Authorization", "OAuth oauth_consumer_key=\"realKey\",oauth_token=\"realKey\",oauth_signature_method=\"HMAC-SHA1\",oauth_timestamp=\"1591115128\",oauth_nonce=\"oEbfgtjeKwA\",oauth_signature=\"realKey\"");
return params;
}
};
queue.add(stringRequest);
}
解决方案
推荐阅读
- sql - Oracle SQL 动态 PIVOT 本月、过去 6 个月和总计
- java - 如何使用接口共享数据 b/w 片段。我希望打开按钮单击片段 1 中的编辑文本数据以显示在片段 2 的文本视图中
- spring - Spring Cloud 数据流服务器多个命名空间
- wso2 - 在 WSO2 AM-Analytics 中更改密码
- python - Python(如何在不创建新文件的情况下更新 xml 文件)
- java - 从应用程序转到设置时,我的应用程序崩溃,设置中的权限更改并返回应用程序
- sql - SQL 选择 *,但如果存在于另一个表中,则覆盖行的“列值”
- javascript - 为什么我的 javascript alert() 代码之前运行
- windows - Windows 上的 Kubelet
- objective-c - 如何将 NSStackView 注入视图层次结构?