0

2つのURLがあります。

  1. https://wimp.supremosolutions.com/api/v1/spot/?format=json
  2. https://wimp.supremosolutions.com/api/v1/spot/?format=json&latitude=45.200375&longitude=9.992465000000001

Androidアクティビティで最初のアクティビティを実行すると、結果は問題なくリストに読み込まれます。しかし、2番目のURLを実行すると、このエラーが発生します。

05-30 16:20:30.473: ERROR/JSON Parser(1740): Error parsing data org.json.JSONException: Value Invalid of type java.lang.String cannot be converted to JSONObject
05-30 16:20:30.633: ERROR/AndroidRuntime(1740): FATAL EXCEPTION: AsyncTask #1
        java.lang.RuntimeException: An error occured while executing doInBackground()
        at android.os.AsyncTask$3.done(AsyncTask.java:278)
        at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
        at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
        at java.util.concurrent.FutureTask.run(FutureTask.java:137)
        at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
        at java.lang.Thread.run(Thread.java:856)
        Caused by: java.lang.NullPointerException
        at com.supremosolutions.wimp.AroundMeParking$LoadInbox.doInBackground(AroundMeParking.java:162)
        at com.supremosolutions.wimp.AroundMeParking$LoadInbox.doInBackground(AroundMeParking.java:138)
        at android.os.AsyncTask$2.call(AsyncTask.java:264)
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
        ... 5 more   

http://jsonlint.com/などのjsonバリデーターを介して両方のURLを実行し、両方を検証しました。

コードはで壊れているようですjsonParser.makeHttpRequest

protected String doInBackground(String... args) {
    // Building Parameters
    List<NameValuePair> params = new ArrayList<NameValuePair>();
    JSONObject json = jsonParser.makeHttpRequest(callableUrl, "GET", params);
    // Check your log cat for JSON response
    Log.d("JSON FOR LOGCAT: ", json.toString());

LogcatでJSONFORLOGCAT文字列を確認できる場合があり、このhttp://pastebin.com/6CWBAyysのように見えますが(ただし、その例外はありますが)、文字列がlogcatにならない場合もあります。

ここでの問題は何ですか?どうすれば修正できますか?

4

1 に答える 1

0

私が持っていたjsonParserクラスはパラメータを追加します。私はすでにベースURL+パラメータを追加していたので、送信されるURLは無効でした。このようにURLを送信する代わりにhttps://wimp.supremosolutions.com/api/v1/spot/?format=json&latitude=45.200375&longitude=9.992465000000001

https://wimp.supremosolutions.com/api/v1/spot/のように送信する必要がありますが、NameValuePairパラメーターを追加してjsonParserクラスに渡します。

        // Building Parameters
        List<NameValuePair> params = new ArrayList<NameValuePair>();
        params.add(new BasicNameValuePair("format", "json"));
        params.add(new BasicNameValuePair("format", "json"));
        params.add(new BasicNameValuePair("format", "json"));
        JSONObject json = jsonParser.makeHttpRequest(URL, "GET", params);

Ken YNとAlexが述べたように、このエラーは無効なURLが原因です。このDOUBLEを取得した場合は、URLをどのように作成しているかを確認し、何が送信されているかを正確に確認してください

于 2012-06-11T20:21:28.783 に答える