【问题标题】:How to get JSON data from the API key when the owner has given you the public and private key as well?当所有者也给了您公钥和私钥时,如何从 API 密钥中获取 JSON 数据?
【发布时间】:2019-12-05 09:37:27
【问题描述】:

我正在练习 API,但是当我让我的上级分配给我一个不同的任务时,他给了我一个私钥、公钥、安全密钥和一个链接! 实际上我的前辈也坚持这一点,所以他让我为此寻找解决方案。 现在我不知道我必须从哪里开始,我可以进行简单的解析,但我从未使用过甚至从未见过私有、公共、安全类型的 API。 请回答以下问题: 1)为什么我们以私有-公共的形式加密 2)如何从android studio中的公私安全类型API密钥获取数据 提前致谢 !! 我无法尝试,因为即使我不知道从哪里开始!下面我展示了简单的解析

package com.example.apitest1;

import android.app.ProgressDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;        
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;        
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;        
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {      
private static final String URL_link="https://www.api.simplifiedcoding.in/course-apis/recyclerview/movies";
private RecyclerView recyclerView;
private RecyclerView.Adapter adapter;
private List<dataModel> listitems;
@Override
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);
recyclerView=findViewById(R.id.recyclerview);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
listitems=new ArrayList<>();
loadRecyclerViewData();
adapter=new dataAdapter(listitems,this);
recyclerView.setAdapter(adapter);}
private void loadRecyclerViewData() {
final ProgressDialog progressDialog=new ProgressDialog(this);
progressDialog.setMessage("loading data");
progressDialog.show();
StringRequest stringRequest=new StringRequest(Request.Method.GET, URL_link,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
progressDialog.dismiss();
try {
JSONObject jsonObject=new JSONObject(response);
JSONArray jsonArray=jsonObject.getJSONArray("movies");
for (int i=0;i<jsonArray.length();i++)
{
JSONObject object=jsonArray.getJSONObject(i);
dataModel list=new dataModel(object.getString("title"),                                                object.getString("language"));
listitems.add(list);                                    }
adapter=new dataAdapter(listitems,getApplicationContext());
recyclerView.setAdapter(adapter);
}
catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}});
RequestQueue requestQueue= Volley.newRequestQueue(this);
requestQueue.add(stringRequest);
}
}

【问题讨论】:

    标签: android api private private-key


    【解决方案1】:

    对于身份验证,恕我直言,您应该覆盖 getHeaders ,请尝试以下操作:

    @Override
    public Map<String, String> getHeaders() throws AuthFailureError {
           Map<String, String> headers = new HashMap<>();                
           String credentials = "username:password";
           String auth = "Basic "+ Base64.encodeToString(credentials.getBytes(), Base64.NO_WRAP);
           headers.put("Content-Type", "application/json");
           headers.put("Authorization", auth);
           headers.put("consumer_key", oauth_consumer_key);
           headers.put("consumer_secret", oauth_consumer_secret);
           return headers;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-18
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      • 2014-02-16
      • 1970-01-01
      • 1970-01-01
      • 2012-01-02
      相关资源
      最近更新 更多