当前位置: 首页 > 知识库问答 >
问题:

JSONObject不能连接到JSONArray-外部数据库

商焕
2023-03-14

我返回一个接受字符串值的JSONArray,但是每当我运行我的应用程序时,我都会得到下面的错误消息。我的(GetCityDetails)方法返回一个空值。下面是我的语法和logcat信息。我做错了什么?谢谢

@SuppressLint("NewApi")
public JSONArray GetCityDetails(String StateID) {

    @SuppressWarnings("deprecation")
    String url = "http://mywebsite.com/getCity.php?StateID="+URLEncoder.encode(StateID);

    HttpEntity httpEntity = null;

    try{

         DefaultHttpClient httpClient = new DefaultHttpClient();
         HttpGet httpGet = new HttpGet(url);

         HttpResponse httpResponse = httpClient.execute(httpGet);

         httpEntity = httpResponse.getEntity();


    } catch(ClientProtocolException e){
        e.printStackTrace();

    } catch(IOException e){
        e.printStackTrace();
    }


    JSONArray jsonArray = new JSONArray();
    if(httpEntity !=null){
        try{

            InputStream entityResponse = httpEntity.getContent();
            String entityResponseAfterFunctionCall = convertInputStreamIntoString(entityResponse);

            Log.e("Entity Response From GetCityDetails Class: ", entityResponseAfterFunctionCall);

              jsonArray = new JSONArray(entityResponseAfterFunctionCall);
        } catch(JSONException e){
            e.printStackTrace();
        } catch(IOException e){
            e.printStackTrace();
        }
    }

    return jsonArray;
}

public String convertInputStreamIntoString(InputStream entityResponse) throws IOException{

    StringWriter writer = new StringWriter();
    IOUtils.copy(entityResponse, writer);
    String theString = writer.toString();
    return theString;
}


}

洛克卡特

01-01 19:11:36.719: E/Entity Response From GetCityDetails Class:(3938): null
01-01 19:11:36.729: W/System.err(3938): org.json.JSONException: Value null of type   org.json.JSONObject$1 cannot be converted to JSONArray
01-01 19:11:36.729: W/System.err(3938):     at org.json.JSON.typeMismatch(JSON.java:107)
01-01 19:11:36.729: W/System.err(3938):     at org.json.JSONArray.<init>(JSONArray.java:91)
01-01 19:11:36.729: W/System.err(3938):     at org.json.JSONArray.<init>(JSONArray.java:103)
01-01 19:11:36.729: W/System.err(3938):     at com.example.bhphprices.com.APIConnector.GetCityDetails(APIConnector.java:120)
01-01 19:11:36.729: W/System.err(3938):     at com.example.bhphprices.com.CityDetailsActivity$GetAllStates.doInBackground(CityDetailsActivity.java:64)
01-01 19:11:36.729: W/System.err(3938):     at  com.example.bhphprices.com.CityDetailsActivity$GetAllStates.doInBackground(CityDetailsActivity.java:1 )
01-01 19:11:36.739: W/System.err(3938):     at android.os.AsyncTask$2.call(AsyncTask.java:185)
01-01 19:11:36.739: W/System.err(3938):     at    java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
01-01 19:11:36.739: W/System.err(3938):     at java.util.concurrent.FutureTask.run(FutureTask.java:138)
01-01 19:11:36.739: W/System.err(3938):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
01-01 19:11:36.739: W/System.err(3938):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
01-01 19:11:36.739: W/System.err(3938):     at java.lang.Thread.run(Thread.java:1019)

共有1个答案

百里秋月
2023-03-14

文档指出,可以通过传递集合或json格式的字符串来实例化JSONArray,但您传递的是一个空值,如日志的第一行所示。

我建议您调试ConvertinPutStreamintoString,并检查您的请求是否收到了错误的响应,还是有其他东西在获取字符串。

 类似资料:
  • 首先,如果我说错了话,我很抱歉,英语不是我的第一语言。此外,出于安全(和NDA)原因,我正在更改真实名称 下面是我如何配置Glassfish池的: 数据源和驱动程序 URL、DBUSER和DBPASSWORD 使用“auser”和“apass123”代替auser和apass123 用\(\auser和\apass)转义第一个字符 下载了OJDBC6.jar的上一个版本 我不是外部数据库的管理员,

  • 问题内容: 我正在创建一个Spring Boot应用程序,该应用程序连接到不由PCF管理(或不在PCF外部)的oracle数据库。在我的本地开发环境中,我在application.properties文件中配置了数据库连接详细信息。有人可以在不对application.properties中的细节进行硬编码的情况下,分享如何在PCF中实现这一点。 问题答案: Cloud Foundry为您提供了一

  • 问题内容: 我今天在这个主题上搜索了很多。但是我找不到它,如何将JSONArray添加到JSONObject? 因为每次执行此操作都会收到此错误:Stackoverflow 我收到此错误: 我想要的JSON:只有最后一个JsonArray出问题了: ,“ vloer”:[{formaat:’vierkant10x15’tegels:[{naam:’‘,imgThumb:’/bla/bla.png’

  • 问题内容: 我正在为我的三年级项目编写应用程序。该应用程序将需要与外部mySQL数据库进行交互。该应用程序将从数据库中检索数据,并在ListView中将其显示给用户。 我对应用程序将要具有的功能有很好的了解。我也花了很多时间使用ListViews和本地SQLite数据库。我还对HttpUrlConnection类做了一些重新研究。 我只是想知道有人能为我提供更多有关如何访问此外部数据库的指导吗?

  • 我已经创建了一个Spring启动应用程序,我没有使用内存中的H2数据库,而是安装了用于H2数据库的exe并在外部使用它。现在我想将我的Spring启动应用程序与这个外部H2数据库连接起来。我已经添加了依赖项,我已经在application.properties文件中添加了所有必需的属性(你可以看到下面)。此外,我还创建了一个带有注释的Entity类。但是当我尝试连接数据库时,它即使使用不同的URL

  • } 我正在使用以下代码: 我得到了一条错误消息: