首页 > 解决方案 > 从android调用的API给出错误

问题描述

当我从客户端运行 API 时,它给出了 response(raw) true 但是当它从 android 调用它时,它给出了状态 500 错误。

E/Volley:[5518] BasicNetwork.performRequest:http: //192.168.9.38 :8787/WebAPI/daapi/auth D/APPLOG:com.android.volley.ServerError的意外响应代码 500

安卓代码:

公共类 MainActivity 扩展 AppCompatActivity {

EditText pass,user;
Button login;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    pass  = (EditText)findViewById(R.id.txtPassword);
    user = (EditText)findViewById(R.id.txtUser);
    login=(Button)findViewById(R.id.login);

    login.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            register(v);
        }
    });

}

public void register(View view)
{
    RequestQueue queue = Volley.newRequestQueue(MainActivity.this);

    String URL = "http://192.168.9.38:8787/WebAPI/daapi/auth";

    StringRequest postRequest = new StringRequest(Request.Method.POST,URL,
            new Response.Listener<String>()
            {
                @Override
                public void onResponse(String response){
                    Log.d("APPLOG",response);
                    parseJson(response);
                }

            },
            new Response.ErrorListener()
            {
                @Override
                public void onErrorResponse(VolleyError error)
                {
                    Log.d("APPLOG",error.toString());
                }
            }

    ){
        @Override
        protected Map<String,String> getParams()
        {
            Map<String,String> params = new HashMap<String,String>();
            params.put("password",pass.getText().toString().trim());
            params.put("user",user.getText().toString().trim());
            return params;
        }
        @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");
            headers.put("Accept", "application/json, text/plain, */*");
            return headers;
        }

    };
    queue.add(postRequest);
}

public void parseJson(String jsonStr)
{
    JSONObject jsonObj = null;
    try {
        jsonObj = new JSONObject(jsonStr);
        Log.d("JSON", "parseJson: "+jsonObj.toString());

    }catch (JSONException e) {

    }
}

}

JAVA API

@Path("/daapi") 公共类 Daapi {

@POST
@Path("auth")
@Produces(MediaType.TEXT_PLAIN)
@Consumes(MediaType.APPLICATION_JSON)
public Boolean AuthUser(JsonObject inputJsonObj ) throws Exception {
    Boolean status = false;
    System.out.println("Auth"+inputJsonObj.toString());
    
    String User = inputJsonObj.getString("user");
    String Password = inputJsonObj.getString("password");
    
    System.out.println(" Value "+User+";"+Password);

    if(User=="chistia@mi.com") return true;

}
    

}

当我在其余客户端中测试 API 时,它显示响应正文(原始):true,请求详细信息如下:

{

"method": "POST",
"transformRequest": [
    null
],
"transformResponse": [
    null
],
"url": "http://192.168.9.38:8787/WebAPI/daapi/auth",
"headers": {
      "Accept": "application/json, text/plain, */*",
      "Content-Type": "application/json;charset=utf-8"
 },
 "data": "{\n\"user\" : \"chistia@mi.com\",\n\"password\" : \"morshed12\"\n}",
 "timeout": {}

}

标签: javaandroidandroid-studioandroid-volley

解决方案


推荐阅读