2016-09-20 8 views
1

私は、ボイスレットでJsonObjectRequestを使用してPOSTリクエストを呼び出すときに、特定の無線LANで空のボディを送信しています。しかし、それはStringRequestのPOSTリクエストで正常に動作します。すべてのモバイルネットワーク上で正常に動作しています。ボレーを使用して投稿要求を送信中に空のボディが取得される

私はnode.jsサーバーとexpressjs/body-parserを使用しています。私がPostmanを使ってPOSTリクエストをしている時、すべて正常に動作します。

エラーは何ですか?誰かがコードを見たいと思えば私は提供することができます。 JsonobjectRequest

private void LoginUser(String email,String pass) { 

     try { 

      Map<String, String> params = new HashMap<String, String>(); 
      params.put("username", email); 
      params.put("password", pass); 
      JSONObject jsonParams = new JSONObject(params); 
      JsonObjectRequest postRequest = new JsonObjectRequest(Request.Method.POST, REGISTER_URL, jsonParams, 
        new Response.Listener<JSONObject>() { 
         @Override 
         public void onResponse(JSONObject response) { 
          try { 
           // Parsing json object response 
           // response will be a json object 
           String TokenDB = response.getString("token"); 
           JSONObject user=response.getJSONObject("user"); 
           Constants.setClinicName(user.getString("name")); 

           //Constants.setTokenDB(TokenDB); 
           if(pd.isShowing()) 
           { 
            pd.dismiss(); 
           } 

           //Maintaining LogIn data till user clicks LogOut 
           SharedPreferences app_preferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 
           SharedPreferences.Editor editor = app_preferences.edit(); 
           editor.putString("Token",TokenDB); 
           //editor.putString("username", username); 
           editor.commit(); 

           //Printing Token in Log in case of null token debugging 
           /*String status=manager.getPreferences(ClinicLogin.this,"token"); 
           Log.d("token", status); 
*/ 
           Intent intent=new Intent(ClinicLogin.this,MainActivity.class); 
           intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); 
           startActivity(intent); 
           } 
          catch (JSONException e) 
          { 
           e.printStackTrace(); 
           Toast.makeText(getApplicationContext(), 
             "Oops! The Username & Password Do Not Match. Please try again!", 
             Toast.LENGTH_LONG).show(); 
           } 

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

          // Handle Error 
          if(pd.isShowing()) {pd.dismiss();} 
          if (error instanceof TimeoutError || error instanceof NoConnectionError) { 
           error.printStackTrace(); 
           Toast.makeText(getApplicationContext(), "Network Error", Toast.LENGTH_SHORT).show(); 
          } else if (error instanceof AuthFailureError) { 
           //TODO 
           error.printStackTrace(); 
           Toast.makeText(getApplicationContext(), "User not authorized", Toast.LENGTH_SHORT).show(); 
          } else if (error instanceof ServerError) { 
           //TODO 
           error.printStackTrace(); 
           Toast.makeText(getApplicationContext(), "Server error", Toast.LENGTH_SHORT).show(); 
          } else if (error instanceof NetworkError) { 
           //TODO 
           error.printStackTrace(); 
           Toast.makeText(getApplicationContext(), "Network Error", Toast.LENGTH_SHORT).show(); 
          } else if (error instanceof ParseError) { 
           //TODO 
           error.printStackTrace(); 
           Toast.makeText(getApplicationContext(), "Error consuming request", Toast.LENGTH_SHORT).show(); 
          } 
          else error.printStackTrace(); 

         } 
        }) { 
       @Override 
       public Map<String, String> getHeaders() throws AuthFailureError { 
        HashMap<String, String> headers = new HashMap<String, String>(); 
        headers.put("Content-Type", "application/json; charset=utf-8"); 
        return headers; 
       } 
      }; 

      RequestQueue requestQueue = Volley.newRequestQueue(getApplicationContext()); 
      postRequest.setRetryPolicy(new DefaultRetryPolicy(
        7000, 
        DefaultRetryPolicy.DEFAULT_MAX_RETRIES, 
        DefaultRetryPolicy.DEFAULT_BACKOFF_MULT)); 
      requestQueue.add(postRequest); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
+1

を使用して

POSTリクエストStringRequest

を使用して
private void LoginUser(final String email,final String pass) { try { /*Map<String, String> params = new HashMap<String, String>(); params.put("username", email); params.put("password", pass); JSONObject jsonParams = new JSONObject(params);*/ final StringRequest stringRequest = new StringRequest(Request.Method.POST, REGISTER_URL, new Response.Listener<String>() { @Override public void onResponse(String response) { //Toast.makeText(getApplicationContext(),response.toString(),Toast.LENGTH_LONG).show(); try { Log.i("Inside try", "yes"); JSONObject jsonResponse = new JSONObject(response).getJSONObject("user"); Log.i("User name",jsonResponse.getString("name")); Constants.setClinicName(jsonResponse.getString("name")); String TokenDB=new JSONObject(response).getString("token"); //Toast.makeText(getApplicationContext(),TokenDB,Toast.LENGTH_LONG).show(); if(pd.isShowing()) { pd.dismiss(); } //Maintaining LogIn data till user clicks LogOut SharedPreferences app_preferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); SharedPreferences.Editor editor = app_preferences.edit(); editor.putString("Token",TokenDB); //editor.putString("username", username); editor.commit(); //Printing Token in Log in case of null token debugging /*String status=manager.getPreferences(ClinicLogin.this,"token"); Log.d("token", status); */ Intent intent=new Intent(ClinicLogin.this,MainActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); startActivity(intent); }catch (JSONException ks) { ks.printStackTrace(); Toast.makeText(getApplicationContext(), "Oops! The Username & Password Do Not Match. Please try again!", Toast.LENGTH_LONG).show(); } } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { // Handle Error if(pd.isShowing()) {pd.dismiss();} if (error instanceof TimeoutError || error instanceof NoConnectionError) { error.printStackTrace(); Toast.makeText(getApplicationContext(), "Network Error", Toast.LENGTH_SHORT).show(); } else if (error instanceof AuthFailureError) { //TODO error.printStackTrace(); Toast.makeText(getApplicationContext(), "User not authorized", Toast.LENGTH_SHORT).show(); } else if (error instanceof ServerError) { //TODO error.printStackTrace(); Toast.makeText(getApplicationContext(), "Server error", Toast.LENGTH_SHORT).show(); } else if (error instanceof NetworkError) { //TODO error.printStackTrace(); Toast.makeText(getApplicationContext(), "Network Error", Toast.LENGTH_SHORT).show(); } else if (error instanceof ParseError) { //TODO error.printStackTrace(); Toast.makeText(getApplicationContext(), "Error consuming request", Toast.LENGTH_SHORT).show(); } else error.printStackTrace(); } }){ @Override protected Map<String,String> getParams(){ Map<String,String> params = new HashMap<String, String>(); params.put("username", email); params.put("password", pass); return params; } }; RequestQueue requestQueue = Volley.newRequestQueue(getApplicationContext()); stringRequest.setRetryPolicy(new DefaultRetryPolicy( 7000, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT)); requestQueue.add(stringRequest); } catch (Exception e) { e.printStackTrace(); } } 

POST呼び出しは、あなたが今までやっていることを貼り付けます。 「特定のWiFiが空のボディを送信していますか?」 あなたのポートはWIFIによってブロックされていますか?安全な接続ではありませんか? –

+0

私はコードを追加しました。私はネットワークリクエストをするために、volleyライブラリを使用しています。ポートがブロックされているかどうかチェックする方法は? –

+0

リクエストをサーバーで受信していますか? コンテンツの長さが0より大きい場合は、リクエストごとにサーバー側でレスポンスにヘッダーを追加し、ボレー応答でチェックします。 リクエストにhttp(80)を使用していますか? –

答えて

0
package com.example.mwakidoshi; 

import com.android.volley.NetworkResponse; 
import com.android.volley.ParseError; 
import com.android.volley.Request; 
import com.android.volley.Response; 
import com.android.volley.toolbox.HttpHeaderParser; 

import org.json.JSONException; 
import org.json.JSONObject; 

import java.io.UnsupportedEncodingException; 
import java.util.Map; 

/** 
* Created by Sly on 2017-11-17. 
*/ 

public class CustomRequest extends Request<JSONObject> { 
    private Response.Listener<JSONObject> listener; 
    private Map<String, String> params; 

    public CustomRequest(String url, Map<String, String> params, Response.Listener<JSONObject> responseListener, Response.ErrorListener errorListener) { 
     super(Method.GET, url, errorListener); 
     this.listener = responseListener; 
     this.params = params; 
    } 

    public CustomRequest(int method, String url, Map<String, String> params, Response.Listener<JSONObject> reponseListener, Response.ErrorListener errorListener) { 
     super(method, url, errorListener); 
     this.listener = reponseListener; 
     this.params = params; 
    } 

    @Override 
    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) { 
     listener.onResponse(response); 
    } 
} 
+0

私たちはお客様要求クラス – mwakidoshi

関連する問題