【问题标题】:json not receiving from server after encoding the URL in Android在Android中编码URL后json没有从服务器接收
【发布时间】:2015-02-25 11:16:01
【问题描述】:

我遇到了真正的麻烦。我花了8个小时,但失败了。我想使用电子邮件作为标准从服务器接收 json。这是 java 脚本中代码的工作部分:http://jsfiddle.net/7ydnw3ty/1/ 当我尝试在 android 中转换它时,我得到空结果。请告诉我,问题出在哪里。拜托,拜托,让我摆脱困境。

这里是正在调用的sn-p。

        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(5);

        nameValuePairs.add(new BasicNameValuePair("authtoken", "61d40d3b0395f730d8e24e77cfada8d7"));
        nameValuePairs.add(new BasicNameValuePair("zc_ownername","raffbr2"));
        nameValuePairs.add(new BasicNameValuePair("criteria", "'Email==\"teste1@gmail.com\"'"));

        nameValuePairs.add(new BasicNameValuePair("scope","creatorapi"));

        pBar = new ProgressDialog(MainActivity.this);
        pBar.setCanceledOnTouchOutside(false);
        pBar.setProgressStyle(ProgressDialog.STYLE_SPINNER);
        pBar.setMessage("Communication With Server, Registering...");
        pBar.show();

        MyAsyncTask1 mTask = new MyAsyncTask1();
        mTask.setOnResultsListener(MainActivity.this);
        mTask.execute(getResources().getString(R.string.readserverUrl)+"LoginSecurity1"
                , nameValuePairs);**

后台处理异步任务

    public class MyAsyncTask1 extends AsyncTask<Object, Integer, String> {

    ResultsListener listener;


    public void setOnResultsListener(ResultsListener listener) {
        this.listener = listener;
    }

    @Override
    protected String doInBackground(Object... params) {
        // TODO Auto-generated method stub
        String res = null;
        DefaultHttpClient responseBody = null;
        if (params.length > 0) {
            String mUrl =  params[0].toString();
            List<NameValuePair> mParams = (List<NameValuePair>) params[1];


            try{




                DefaultHttpClient httpclient= new DefaultHttpClient();              

                HttpPost httpget = new HttpPost(mUrl);

                 httpget.setEntity(new UrlEncodedFormEntity(mParams, "UTF-8"));


                HttpResponse response = httpclient.execute(httpget);

                BufferedReader in = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
                String line = "";
                while ((line = in.readLine()) != null) {
                    res=line; 
                    System.out.println(line);
                }
                in.close();

                }catch(Exception e){

                    return res=e.toString();

                }

            }
        return res;
    }
    @Override
    protected void onPostExecute(String result) {
    //Toast.makeText(getBaseContext(), result, Toast.LENGTH_SHORT).show();
        if (!listener.equals(null)) {
            listener.onResultsSucceeded(result);
        }
    }

    public HttpClient getNewHttpClient() {
        try {
            KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
            trustStore.load(null, null);



            HttpParams params = new BasicHttpParams();
            HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
            HttpProtocolParams.setContentCharset(params, HTTP.UTF_8);

            SchemeRegistry registry = new SchemeRegistry();
            registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));


            ClientConnectionManager ccm = new ThreadSafeClientConnManager(params, registry);

            return new DefaultHttpClient(ccm, params);
        } catch (Exception e) {
            return new DefaultHttpClient();
        }
    }


}

【问题讨论】:

  • 所以你从“httpclient.execute(httpget)”得到的HttpResponse是空的?
  • 我收到值但有空行
  • 在 javascript case 值是完美的...请检查链接。可能是我的正则表达式有问题。我尝试了很多
  • 好的,能验证一下服务器是否收到了post请求吗?
  • 是的。你可以在这里查看jsfiddle.net/7ydnw3ty/2

标签: java javascript android json


【解决方案1】:

我建议使用 Volley lib 来解决 JSON POST 或 GET 任务: Volley example

【讨论】:

    猜你喜欢
    • 2011-06-19
    • 1970-01-01
    • 1970-01-01
    • 2014-12-06
    • 1970-01-01
    • 1970-01-01
    • 2022-01-09
    • 2016-04-08
    • 2017-12-29
    相关资源
    最近更新 更多