从Android / Volley连接到MS Sql时出现服务器错误

时间:2018-05-06 09:22:40

标签: php android sql-server android-volley

我正在使用Volley为我的Android应用程序从我的服务器获取数据。它使用XAMPP 5.6在我的本地Windows机器上完美运行。

我将它部署在Windows服务器上(使用PHP的IIS)。当我使用邮递员检查请求时,请求正常运行。但是当我从我的Android代码中检查它时,它返回 ServerError

我进一步检查了,如果我从我的代码中注释掉headers.put("Content-Type", "application/x-www-form-urlencoded");行,它就适用于IIS/PHP

是否需要从Android应用程序运行它的任何设置?如果我从postman运行它,它正在运行并给出所需的结果。

我的代码

private void getclient(final String clientCode) {
    try {
        String URL = Global.APIURL + Global.getclient;            

        Map<String, String> params = new HashMap<>();

        CustomRequest strRequest = new CustomRequest(Request.Method.POST, URL, params, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                Global.ShowLog("Response getclient:" + response);
                Global.hideProgressDialog();
                try {
                    if (response != null && !TextUtils.isEmpty(response)) {
                        JSONObject jObj = new JSONObject(response);
                        if (jObj.getBoolean("error")) {
                            Global.ShowAlert(ThisPage.this, jObj.getString("message"));
                        } else {
                            JSONArray jsonArrayData=jObj.getJSONArray("data");
                            if(jsonArrayData.length()>0){

                                startActivity(new Intent(ThisPage.this, Login.class));
                                finish();
                            }
                        }
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Global.ShowLog("Response Login(Error):" + error.getMessage());                   
            }
        }) {

            /**
             * Passing some request headers
             * */
            @Override
            public Map<String, String> getHeaders() throws AuthFailureError {
                HashMap<String, String> headers = new HashMap<>();
                headers.put("Content-Type", "application/x-www-form-urlencoded");                    
                return headers;
            }

            @Override
            protected Map<String, String> getParams() {
                Map<String, String> params = new HashMap<>();
                params.put("partycd", clientCode);

                return params;
            }
        };

    } catch (Exception e) {
        e.printStackTrace();
        Global.hideProgressDialog();
    }
}

1 个答案:

答案 0 :(得分:0)

它解决了。

更改了行:

  

headers.put(“Content-Type”,“application / x-www-form-urlencoded”);

到:

  

headers.put(“Content-Type”,“application / x-www-form-urlencoded;   字符集= UTF-8" );