以下是所有的错误:
W/EGL_emulation: eglSurfaceAttrib not implemented W/OpenGLRenderer: Failed to set EGL_SWAP_BEHAVIOR on surface 0x7f651f4e3780, error=EGL_SUCCESS W/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.
下面是我的代码:
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错误。
如果在尝试解析result
之前记录
result
的值,则可以更容易地看到。
但是,你应该意识到这一点。
“要访问API,如果您是在免费或付费计划中,您需要注册API密钥。”
-http://openweatherap.org/API
请参阅此处以使用API密钥
换句话说,获取一个API密钥,然后将其附加到URL中。例如
String API_KEY = "XXXXxxxx";
String url = "http://.../weather?q=" + city + "&APPID=" + API_KEY;
问题内容: 我正在尝试从服务器获取JSON值。我不知道我的代码有什么问题。我正在使用,这是我的代码在 码: 这是logcat 这是 JSON 格式 问题答案: 您可能会得到一个空白的答复。它不为null,但 jsontext 为空。因此,您将收到此错误,而不是Nullpointer异常 您是否正在向服务器发送正确的参数。还要检查url是否响应POST请求。
我见过其他人遇到这个问题,但没有一个帖子能够帮助我。我试图在REST调用库中使用Volley,当我试图使用带有JSON对象的Put调用作为参数时,我得到了错误:org。json。JSONException:输入结束于的字符0处。 代码如下: jsonParams日志显示: 有没有其他我错过的场景?看起来请求无法解析JSON对象。我甚至尝试创建一个HashMap,然后用它创建一个JSON对象,但仍然
问题内容: 我已经看到其他人遇到了这个问题,但是没有一个帖子能够帮助我。我正在尝试将Volley用于我的REST调用库,当我尝试将JSON对象作为参数使用Put调用时,我得到了。 这是代码: jsonParams日志显示: 我还有其他设置吗?看来请求无法解析JSON对象。我什至尝试创建一个HashMap,然后使用它创建一个JSON对象,但是我仍然得到相同的结果。 问题答案: 我也遇到了这个问题。
问题内容: 我在php中有一个API,可以JSON格式发送数据。我编写了以下代码,当我使用wifi时可以正常工作。但是,当我想在3g上从API下载数据时,会收到以下异常:JSONException:在字符0的输入结束 我不知道为什么它可以在wifi上工作,但不能在移动互联网上使用。我的代码: 有人可以帮助我吗? 问题答案: 您可能会得到一个空白的答复。它不为null,但响应为空。因此,您将收到此错
我正在尝试登录应用程序,但我一直遇到“解析数据org.json.JSONException错误:在字符0的输入结束” 我的登录名。java看起来像这样 公共类登录扩展活动实现OnClickListener{私有EditText用户,pass; 私有静态最终字符串LOGIN_URL="my url"; //从真实服务器进行测试: } } 我的JSONParser。java如下所示:` 公共类JSON
问题内容: 我正在尝试从android解析json,但出现了这个奇怪的异常。我的json数据是 {“ id”:“ 1”,“ owner”:“ 1”,“ name”:“ gravitas”,“ description”:“是一场盛会”,“ start_time”:“ 0000-00-00 00:00:00 “,” end_time“:” 0000-00-00 00:00:00“,” venue“:”