발리에서 JsonObjectRequest를 사용하여 POST 요청을 호출 할 때 특정 Wi-Fi에서 빈 본문을 전송 중입니다. 하지만 그것은 StringRequest POST 요청과 잘 작동합니다. 그것은 모든 모바일 네트워크에서 잘 작동합니다.발리를 사용하여 게시물 요청을 보내면서 비어있는 본문을 가져 오는 중
node.js 서버 및 expressjs/body-parser를 사용하고 있습니다. Postman을 사용하여 POST 요청을하면 모든 것이 정상적으로 작동합니다.
무엇이 오류입니까? 코드를보고 싶은 사람은 누구나 제공 할 수 있습니다. JsonobjectRequest
사용 StringRequestprivate 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 호출을 사용하여
POST 요청 당신이 지금까지 한 일을
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();
}
}
붙여 넣기. '빈 몸을 보내고있는 특정 와이파이?' 포트가 WIFI에 의해 차단되고 있습니까? 보안 연결이 아닌가요? –
코드를 추가했습니다. 네트워크 요청을하기 위해 발리 라이브러리를 사용 중입니다. 포트가 차단되었는지 어떻게 확인합니까? –
서버에서 요청을 수신합니까? 콘텐츠 길이가 0보다 큰 경우 모든 요청에 대해 서버 쪽에서 응답에 헤더를 추가하고 발리 응답을 확인하십시오. 요청에 http (80)를 사용하고 있습니까? –