簡體   English   中英

從Android / Volley連接到MS Sql時出現服務器錯誤

[英]Getting Server Error while connecting to MS Sql from 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應用程序運行它需要任何設置嗎? 它正在運行,並且如果我是從郵遞員那里運行的,則可以得到期望的結果。

我的密碼

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();
    }
}

解決了。

改變了這一行:

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

至 :

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM