Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
401在android中使用Volley库时发生授权错误_Android_Networking_Android Volley_Settings_Http Status Code 401 - Fatal编程技术网

401在android中使用Volley库时发生授权错误

401在android中使用Volley库时发生授权错误,android,networking,android-volley,settings,http-status-code-401,Android,Networking,Android Volley,Settings,Http Status Code 401,我使用Volley库是为了将我的设置活动与Android Studio上的服务器集成。我正在执行一个请求GET method,以便从服务器检索值。但是当我尝试做同样的事情时,我得到了一个凌空的错误,说明401错误 我也在POSTMAN应用程序上测试了我的url。它显示了相同的401授权错误 问题1:Android平台截取库中出现此类错误的原因是什么? 问题2:如何解决,以便在Android平台上执行截击请求。 参考代码: @Override protected void onCreate

我使用Volley库是为了将我的设置活动与Android Studio上的服务器集成。我正在执行一个请求GET method,以便从服务器检索值。但是当我尝试做同样的事情时,我得到了一个凌空的错误,说明401错误

我也在POSTMAN应用程序上测试了我的url。它显示了相同的401授权错误

问题1:Android平台截取库中出现此类错误的原因是什么?

问题2:如何解决,以便在Android平台上执行截击请求。

参考代码:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setupActionBar();

        sharedPreferences = getSharedPreferences(getString(R.string.preference_file_key), Context.MODE_PRIVATE);
        final String userid=sharedPreferences.getString(getString(R.string.saved_user_id),"");
        Toast.makeText(this, userid, Toast.LENGTH_LONG).show();
        //final String userid=NetworkHelper.get().getUserIdFromSharedPreferences();

        //sharedPreferences=getSharedPreferences(getString(R.string.preference_file_key),MODE_PRIVATE);
        //SharedPreferences.Editor editor=sharedPreferences.edit();
        //editor.clear().apply();

        //String userid=sharedPreferences.getString(getString(R.string.saved_user_id),"");

        requestQueue= Volley.newRequestQueue(this);
        String urlset=getString(R.string.url_server_base)+getString(R.string.url_users)+userid;

        JsonObjectRequest jsonObjectRequest=new JsonObjectRequest(Request.Method.GET, urlset, null, new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONObject jsonObject) {

                try {
                    //JSONArray jsonArray=jsonObject.getJSONArray("settings");

                   // for (int i=0; i<jsonArray.length();i++)
                    //{
                        JSONObject settings=jsonObject.getJSONObject("settings");

                        //retrieving values from the server

                        int eventnotifmins=settings.getInt("eventNotificationMins");
                        int alldaynotiftype=settings.getInt("allDayNotificationType");
                        int alldaynotiftimehr=settings.getInt("allDayNotificationTimeHr");
                        int alldaynotiftimemin=settings.getInt("allDayNotificationTimeMin");


                        // Feeding the values of preferences from server in Shared preferences

                        sharedPreferences=PreferenceManager.getDefaultSharedPreferences(SettingsActivity.this);
                        SharedPreferences.Editor editor1=sharedPreferences.edit();
                        editor1.putString("list_preference_1",Integer.toString(eventnotifmins));
                        editor1.putString("list_preference_2",Integer.toString(alldaynotiftype));
                        editor1.putString("list_preference_3",Integer.toString(alldaynotiftimehr));
                        editor1.apply();


                        //sBindPreferenceSummaryToValueListener
                       // this.bindPreferenceSummaryToValue();


                    //}


                } catch (JSONException e) {
                    e.printStackTrace();
                }

            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError volleyError) {

                volleyError.printStackTrace();
                Toast.makeText(SettingsActivity.this, "Check your internet connection", Toast.LENGTH_SHORT).show();

            }
        });

        requestQueue.add(jsonObjectRequest);

    }
@覆盖
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setupActionBar();
SharedReferences=GetSharedReferences(getString(R.string.preference\u file\u key)、Context.MODE\u PRIVATE);
最终字符串userid=SharedReferences.getString(getString(R.String.saved_user_id),“”);
Toast.makeText(this,userid,Toast.LENGTH_LONG).show();
//最后一个字符串userid=NetworkHelper.get().getUserIDFromSharedReferences();
//SharedReferences=GetSharedReferences(getString(R.string.preference\u file\u key),模式\u PRIVATE);
//SharedReferences.Editor=SharedReferences.edit();
//editor.clear().apply();
//String userid=SharedReferences.getString(getString(R.String.saved_user_id),“”);
requestQueue=Volley.newRequestQueue(this);
String urlset=getString(R.String.url\u server\u base)+getString(R.String.url\u users)+userid;
JsonObjectRequest JsonObjectRequest=新JsonObjectRequest(Request.Method.GET,urlset,null,new Response.Listener()){
@凌驾
公共void onResponse(JSONObject JSONObject){
试一试{
//JSONArray JSONArray=jsonObject.getJSONArray(“设置”);

//对于(int i=0;i您可以通过标题覆盖
getHeader()
方法添加标题,如下所示:

JsonObjectRequest jsonObjectRequest=new JsonObjectRequest(Request.Method.GET, urlset, null, new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONObject jsonObject) {

                try {
                        JSONObject settings=jsonObject.getJSONObject("settings");

                        int eventnotifmins=settings.getInt("eventNotificationMins");
                        int alldaynotiftype=settings.getInt("allDayNotificationType");
                        int alldaynotiftimehr=settings.getInt("allDayNotificationTimeHr");
                        int alldaynotiftimemin=settings.getInt("allDayNotificationTimeMin");


                        // Feeding the values of preferences from server in Shared preferences

                        sharedPreferences=PreferenceManager.getDefaultSharedPreferences(SettingsActivity.this);
                        SharedPreferences.Editor editor1=sharedPreferences.edit();
                        editor1.putString("list_preference_1",Integer.toString(eventnotifmins));
                        editor1.putString("list_preference_2",Integer.toString(alldaynotiftype));
                        editor1.putString("list_preference_3",Integer.toString(alldaynotiftimehr));
                        editor1.apply();
                        //sBindPreferenceSummaryToValueListener
                       // this.bindPreferenceSummaryToValue();
                    //}

                } catch (JSONException e) {
                    e.printStackTrace();
                }

            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError volleyError) {

                volleyError.printStackTrace();
                Toast.makeText(SettingsActivity.this, "Check your internet connection", Toast.LENGTH_SHORT).show();

            }
        },
        {    

// This is for Authorization  Headers you can add content type as per your needs 
    @Override
    public Map<String, String> getHeaders() throws AuthFailureError {
        Map<String, String> params = new HashMap<String, String>();
        params.put("Authorization", "AWS" + " " + AWSAccessKeyId + ":" + Signature);
        return params;
    });
JsonObjectRequest-JsonObjectRequest=new-JsonObjectRequest(Request.Method.GET,urlset,null,new-Response.Listener()){
@凌驾
公共void onResponse(JSONObject JSONObject){
试一试{
JSONObject settings=JSONObject.getJSONObject(“设置”);
int eventnotifmins=settings.getInt(“eventNotificationMins”);
int alldaynotiftype=settings.getInt(“allDayNotificationType”);
int alldaynotiftimehr=settings.getInt(“allDayNotificationTimeHr”);
int alldaynotiftimemin=settings.getInt(“allDayNotificationTimeMin”);
//从共享首选项中的服务器提供首选项的值
sharedPreferences=PreferenceManager.getDefaultSharedPreferences(设置Activity.this);
SharedReferences.Editor editor1=SharedReferences.edit();
editor1.putString(“list_preference_1”,Integer.toString(eventnotifmins));
editor1.putString(“list_preference_2”,Integer.toString(alldaynotiftype));
editor1.putString(“list_preference_3”,Integer.toString(alldaynotiftimehr));
editor1.apply();
//sBindPreferenceSummaryToValueListener
//this.bindPreferenceSummaryToValue();
//}
}捕获(JSONException e){
e、 printStackTrace();
}
}
},new Response.ErrorListener(){
@凌驾
公共错误响应(截击错误截击错误){
截击错误。printStackTrace();
Toast.makeText(SettingsActivity.this,“检查您的互联网连接”,Toast.LENGTH_SHORT.show();
}
},
{    
//这是授权标题,您可以根据需要添加内容类型
@凌驾
公共映射getHeaders()引发AuthFailureError{
Map params=新的HashMap();
参数put(“授权”、“AWS”+“”+AWSAccessKeyId+”:“+签名);
返回参数;
});
这里是AWSAccessKeyId和签名,您可以从AWS服务器获得。 有关认证AWS
服务的更多详细信息,请访问此链接


我希望它对你有用。

你使用wampserver吗?不,它是一个合适的服务器。它基本上是来自亚马逊的aws服务。@Faizmir发布你的代码你尝试了什么?你必须传递头令牌进行授权,请参考此答案@VibhorGupta跟随评论中提到的链接deepak。使用你的身份验证令牌。你的代码很好,只需添加基本身份验证。@VibhorGupta试试itOk,我会试试这个。会让你知道它是否有效。谢谢你帮我。@Saurabhandari