对MongoLab的Android HTTP GET请求

Itaied

我正在的沙盒db中开发一个测试应用程序MongoLab执行REST查询时,我会得到正确的文档,但是在我的Android应用程序中执行该文档会抛出异常:

查询:(https://api.mongolab.com/api/1/databases/my-db/collections/my-col?q={id:"123"}&apiKey=***当然,定义了db,col和api键)。将此URI放在浏览器中会找回我要查找的文档。

安卓:

class RequestTask extends AsyncTask<String, String, String> {

    @Override
    protected String doInBackground(String... uri) {
        Log.i("URI", uri[0]);
        HttpClient httpclient = new DefaultHttpClient();
        HttpResponse response;
        String responseString = null;
        try {
            response = httpclient.execute(new HttpGet(uri[0]));
            StatusLine statusLine = response.getStatusLine();
            if (statusLine.getStatusCode() == HttpStatus.SC_OK) {
                ByteArrayOutputStream out = new ByteArrayOutputStream();
                response.getEntity().writeTo(out);
                responseString = out.toString();
                out.close();
            } else {
                // Closes the connection.
                response.getEntity().getContent().close();
                throw new IOException(statusLine.getReasonPhrase());
            }
        } catch (ClientProtocolException e) {
            Log.e(LOG_TAG, e.getMessage());
        } catch (IOException e) {
            Log.e(LOG_TAG, e.getMessage());
        }
        return responseString;
    }

    @Override
    protected void onPostExecute(String result) {
        super.onPostExecute(result);
        Log.i(LOG_TAG, result);
    }
}

例外:

java.lang.RuntimeException: An error occured while executing doInBackground()
...
Caused by: java.lang.IllegalArgumentException: Illegal character in query at index 71: https://api.mongolab.com/api/1/databases/my-db/collections/my-col?q={"id":"123"}&apiKey=***

在索引71中的字符将是第一=my-col?q,且有于该行的引用:response = httpclient.execute(new HttpGet(uri[0]));

为什么在浏览器上而不是在我的设备上能正常工作?我已经成功地拉出了所有文档而没有查询...

每个人

如果直接将URL传递给客户端,则不会自动对其进行编码。

尝试使用URLEncoder.encode(yourParameter, "UTF-8")或使用querybuilder和中的appendQueryParameter方法对其进行编码android.net.Uri.Builder

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Android:AsyncTask发出HTTP GET请求?

来自分类Dev

Android:AsyncTask发出HTTP GET请求?

来自分类Dev

Android JAVA HTTP GET请求-带有NULL消息的NetworkOnMainThreadException

来自分类Dev

在Android中使用Volley发送HTTP GET请求时出错

来自分类Dev

AJAX http GET请求

来自分类Dev

在 get 请求中嵌套 http post 请求

来自分类Dev

带参数的HTTP GET请求

来自分类Dev

JavaScript中的Http GET请求

来自分类Dev

带参数的HTTP GET请求

来自分类Dev

XML HTTP GET请求失败

来自分类Dev

无法发送HTTP请求Android

来自分类Dev

在Android中优化HTTP请求

来自分类Dev

Android HTTP Post授权请求

来自分类Dev

Android Java Http请求发布

来自分类Dev

与凌空Java / Android的HTTP请求

来自分类Dev

在Android中编程HTTP请求

来自分类Dev

来自Android设备的HTTP请求

来自分类Dev

android - http post请求设计

来自分类Dev

Android Http 请求 POST JSON

来自分类Dev

Cordova-为什么$ http get请求在Android设备上失败但在chrome上工作

来自分类Dev

使用http请求GET android发送阿拉伯语单词

来自分类Dev

在节点中的GET请求后从mongolab获取空JSON

来自分类Dev

Android GET请求

来自分类Dev

从Chrome扩展程序发出HTTP GET请求

来自分类Dev

TypeScript / angularJS HTTP GET请求中的范围

来自分类Dev

AppDelegate,LoginHome,TabBar和HTTP GET请求

来自分类Dev

在Java中调用http get请求

来自分类Dev

在Chrome中监听HTTP GET请求

来自分类Dev

创建HTTP GET标头请求