gpt4 book ai didi

java - org.json.JSONException : End of input at character 0 of

转载 作者:行者123 更新时间:2023-12-01 09:25:08 26 4
gpt4 key购买 nike

我已按照以下教程进行操作,但我的代码出现系统错误: http://www.informit.com/articles/article.aspx?p=2154675&seqNum=4

以下是所有错误:

W/EGL_emulation: eglSurfaceAttrib not implementedW/OpenGLRenderer: Failed to set EGL_SWAP_BEHAVIOR on surface 0x7f651f4e3780, error=EGL_SUCCESSW/DefaultRequestDirector: Authentication error: Unable to respond to any of these challenges: {}W/System.err: org.json.JSONException: End of input at character 0 of W/System.err:     at org.json.JSONTokener.syntaxError(JSONTokener.java:450)W/System.err:     at org.json.JSONTokener.nextValue(JSONTokener.java:97)W/System.err:     at org.json.JSONObject.(JSONObject.java:156)W/System.err:     at org.json.JSONObject.(JSONObject.java:173)W/System.err:     at com.example.theol.opsc7312_assign2_14001515_theolin_naidoo.MainActivity$ReadJSONFeed.onPostExecute(MainActivity.java:74)W/System.err:     at com.example.theol.opsc7312_assign2_14001515_theolin_naidoo.MainActivity$ReadJSONFeed.onPostExecute(MainActivity.java:46)W/System.err:     at android.os.AsyncTask.finish(AsyncTask.java:636)W/System.err:     at android.os.AsyncTask.access$500(AsyncTask.java:177)W/System.err:     at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:653)W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:102)W/System.err:     at android.os.Looper.loop(Looper.java:135)W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:5254)W/System.err:     at java.lang.reflect.Method.invoke(Native Method)W/System.err:     at java.lang.reflect.Method.invoke(Method.java:372)W/System.err:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)Application terminated.

Here's my code:

import android.os.Bundle;
import android.app.Activity;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.view.View;
import org.apache.http.client.methods.HttpPost;
import org.json.JSONException;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.client.HttpClient;
import org.apache.http.HttpResponse;
import org.apache.http.HttpEntity;
import java.io.InputStream;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import android.os.AsyncTask;
import org.json.JSONObject;
import org.apache.http.StatusLine;
import org.json.JSONArray;
import java.text.NumberFormat;

public class MainActivity extends Activity {
String city="";

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

Button submitButton = (Button)this.findViewById(R.id.submit_btn);

submitButton.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v) {
String country="";
EditText cityName = (EditText) findViewById(R.id.city_name);
city=cityName.getText().toString();

String url="http://api.openweathermap.org/data/2.5/weather?q="+city;
new ReadJSONFeed().execute(url);

}
});
}
private class ReadJSONFeed extends AsyncTask<String, String, String> {
protected void onPreExecute() {}
@Override
protected String doInBackground(String... urls) {
HttpClient httpclient = new DefaultHttpClient();
StringBuilder builder = new StringBuilder();
HttpPost httppost = new HttpPost(urls[0]);
try {
HttpResponse response = httpclient.execute(httppost);
StatusLine statusLine = response.getStatusLine();
int statusCode = statusLine.getStatusCode();
if (statusCode == 200) {
HttpEntity entity = response.getEntity();
InputStream content = entity.getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(content));
String line;
while ((line = reader.readLine()) != null) {
builder.append(line);
}
}
} catch (Exception e) {
e.printStackTrace();
}
return builder.toString();
}
protected void onPostExecute(String result) {
String weatherInfo="Weather Report of "+city +" is: \n";
try{

JSONObject jsonObject = new JSONObject(result);
JSONObject jscoordObject = new JSONObject(jsonObject.getString("coord"));
weatherInfo+="Longitude: "+jscoordObject.getString("lon")+"\n";
weatherInfo+="Latitude: "+jscoordObject.getString("lat")+"\n";
JSONArray jsweatherObject = new JSONArray(jsonObject.getString("weather"));
JSONObject jweatherObject = jsweatherObject.getJSONObject(0);
weatherInfo+="Clouds: "+jweatherObject.getString("description")+"\n";
JSONObject jsmainObject = new JSONObject(jsonObject.getString("main"));
weatherInfo+="Humidity: "+jsmainObject.getString("humidity")+"% \n";
weatherInfo+="Atmospheric Pressure: "+jsmainObject.getString("pressure")+"hPa \n";
float temp=Float.parseFloat(jsmainObject.getString("temp"));
temp = temp - (float) 273.15;
NumberFormat df = NumberFormat.getNumberInstance();
df.setMaximumFractionDigits(2);
weatherInfo+="Temperature: "+ String.valueOf(df.format(temp)) +" C\n";
JSONObject jswindObject = new JSONObject(jsonObject.getString("wind"));
weatherInfo+="Wind Speed: "+jswindObject.getString("speed")+"mps \n";
}
catch (JSONException e) {
e.printStackTrace();
}
TextView resp = (TextView) findViewById(R.id.response);
if(weatherInfo.trim().length() >0 )
resp.setText(weatherInfo);
else
resp.setText("Sorry no match found");
}
}
}

最佳答案

根据错误,您没有收到 JSON,这可能意味着您收到了一些 HTTP 错误。

如果在尝试解析结果之前记录结果的值,您可以更容易地看到这一点。

<小时/>

但是,您应该意识到这一点。

"To access the API you need to sign up for an API key if you are on a free or paid plan."
- http://openweathermap.org/api

请参阅此处 use the API key

换句话说,获取 API key ,然后将其附加到您的 URL。例如

String API_KEY = "XXXXxxxx";
String url = "http://.../weather?q=" + city + "&APPID=" + API_KEY;

关于java - org.json.JSONException : End of input at character 0 of,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39899921/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com