Android 使用json数组的twitter提要
我正在开发一个应用程序来检索Twitter提要。我写了以下内容Android 使用json数组的twitter提要,android,json,twitter,Android,Json,Twitter,我正在开发一个应用程序来检索Twitter提要。我写了以下内容 try { codeString x = ""; Twitter y; HttpClient pingclient = new DefaultHttpClient(); HttpPost pingpost = new HttpPost("https://twitter.com/statuses/user_timeline/krish_hari.json"); pingpost.addHe
try {
codeString x = "";
Twitter y;
HttpClient pingclient = new DefaultHttpClient();
HttpPost pingpost = new HttpPost("https://twitter.com/statuses/user_timeline/krish_hari.json");
pingpost.addHeader("Accepts", "application/json");
pingpost.addHeader("Content-type", "application/json");
org.apache.http.HttpResponse pingResponse = pingclient.execute(pingpost);
HttpEntity loginEntity = pingResponse.getEntity();
String result = EntityUtils.toString(loginEntity);
//InputStream is = this.getResources().openRawResource(R.raw.jsontwitter);
//byte [] buffer = new byte[is.available()];
//while (is.read(buffer) != -1);
//String jsontext = new String(buffer);
JSONArray entries = new JSONArray(result);
x = "JSON parsed.\nThere are [" + entries.length() + "]\n\n";
int i;
for (i=0;i<entries.length();i++) {
JSONObject post = entries.getJSONObject(i);
x += "------------\n";
x += "Date:" + post.getString("created_at") + "\n";
x += "Post:" + post.getString("text") + "\n\n";
}
tvData.setText(x);
}
catch (Exception je) {
tvData.setText("Error w/file: " + je.getMessage());
}
试试{
代码字符串x=“”;
Twitter-y;
HttpClient pingclient=新的默认HttpClient();
HttpPost pingpost=新的HttpPost(“https://twitter.com/statuses/user_timeline/krish_hari.json");
addHeader(“接受”、“应用程序/json”);
addHeader(“内容类型”、“应用程序/json”);
org.apache.http.HttpResponse pingResponse=pingclient.execute(pingpost);
HttpEntity loginenty=pingResponse.getEntity();
字符串结果=EntityUtils.toString(逻辑性);
//InputStream is=this.getResources().openRawResource(R.raw.jsontwitter);
//byte[]buffer=新字节[is.available()];
//while(is.read(buffer)!=-1);
//String jsontext=新字符串(缓冲区);
JSONArray条目=新的JSONArray(结果);
x=“已解析JSON。\n有[“+条目的.length()+”]\n\n”;
int i;
对于(i=0;i一些建议,它可能有效:
使用HTTPGet而不是HTTPPost
不需要添加标题,删除这两行
试试这些,让我知道:一些建议,可能有用:
使用HTTPGet而不是HTTPPost
不需要添加标题,删除这两行
请尝试这些并让我知道:尝试以下代码:
检查日志cat中的响应
public class List extends Activity {
String response_data;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
new Load_Task().execute();
}
public class Load_Task extends AsyncTask<Void, Void, Void> {
private final ProgressDialog dialog = new ProgressDialog(List.this);
// can use UI thread here
protected void onPreExecute() {
this.dialog.setMessage("Loading...");
this.dialog.setCancelable(false);
this.dialog.show();
}
@Override
protected Void doInBackground(Void... arg0) {
// TODO Auto-generated method stub
try{
HttpClient client = new DefaultHttpClient();
String getURL = "http://twitter.com/statuses/user_timeline/krish_hari.json";
HttpGet get = new HttpGet(getURL);
HttpResponse responseGet = client.execute(get);
HttpEntity resEntityGet = responseGet.getEntity();
if (resEntityGet != null) {
response_data=EntityUtils.toString(resEntityGet);
}
Log.v("aaaa", ""+response_data);
}
catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void result) {
if (this.dialog.isShowing()) {
this.dialog.dismiss();
}
}
}
}
公共类列表扩展活动{
字符串响应数据;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
新建加载_任务().execute();
}
公共类加载任务扩展了异步任务{
private final ProgressDialog=新建ProgressDialog(List.this);
//可以在这里使用UI线程
受保护的void onPreExecute(){
this.dialog.setMessage(“加载…”);
this.dialog.setCancelable(false);
this.dialog.show();
}
@凌驾
受保护的Void doInBackground(Void…arg0){
//TODO自动生成的方法存根
试一试{
HttpClient=new DefaultHttpClient();
字符串getURL=”http://twitter.com/statuses/user_timeline/krish_hari.json";
HttpGet=newhttpget(getURL);
HttpResponse responseGet=client.execute(get);
HttpEntity-resEntityGet=responseGet.getEntity();
如果(resEntityGet!=null){
response_data=EntityUtils.toString(resEntityGet);
}
Log.v(“aaaa”和“+响应数据);
}
捕获(例外e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
返回null;
}
@凌驾
受保护的void onPostExecute(void结果){
if(this.dialog.isShowing()){
this.dialog.disclose();
}
}
}
}
尝试以下代码:
检查日志cat中的响应
public class List extends Activity {
String response_data;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
new Load_Task().execute();
}
public class Load_Task extends AsyncTask<Void, Void, Void> {
private final ProgressDialog dialog = new ProgressDialog(List.this);
// can use UI thread here
protected void onPreExecute() {
this.dialog.setMessage("Loading...");
this.dialog.setCancelable(false);
this.dialog.show();
}
@Override
protected Void doInBackground(Void... arg0) {
// TODO Auto-generated method stub
try{
HttpClient client = new DefaultHttpClient();
String getURL = "http://twitter.com/statuses/user_timeline/krish_hari.json";
HttpGet get = new HttpGet(getURL);
HttpResponse responseGet = client.execute(get);
HttpEntity resEntityGet = responseGet.getEntity();
if (resEntityGet != null) {
response_data=EntityUtils.toString(resEntityGet);
}
Log.v("aaaa", ""+response_data);
}
catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void result) {
if (this.dialog.isShowing()) {
this.dialog.dismiss();
}
}
}
}
公共类列表扩展活动{
字符串响应数据;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
新建加载_任务().execute();
}
公共类加载任务扩展了异步任务{
private final ProgressDialog=新建ProgressDialog(List.this);
//可以在这里使用UI线程
受保护的void onPreExecute(){
this.dialog.setMessage(“加载…”);
this.dialog.setCancelable(false);
this.dialog.show();
}
@凌驾
受保护的Void doInBackground(Void…arg0){
//TODO自动生成的方法存根
试一试{
HttpClient=new DefaultHttpClient();
字符串getURL=”http://twitter.com/statuses/user_timeline/krish_hari.json";
HttpGet=newhttpget(getURL);
HttpResponse responseGet=client.execute(get);
HttpEntity-resEntityGet=responseGet.getEntity();
如果(resEntityGet!=null){
response_data=EntityUtils.toString(resEntityGet);
}
Log.v(“aaaa”和“+响应数据);
}
捕获(例外e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
返回null;
}
@凌驾
受保护的void onPostExecute(void结果){
if(this.dialog.isShowing()){
this.dialog.disclose();
}
}
}
}
我使用此代码检索Twitter提要:
HttpClient httpclient = new DefaultHttpClient();
HttpResponse response = httpclient.execute(new HttpGet(url[0]));
InputStream is = response.getEntity().getContent();
BufferedReader br = new BufferedReader(new InputStreamReader(is,"UTF-8"));
StringBuffer sb = new StringBuffer();
try
{
String line = null;
while ((line = br.readLine())!=null)
{
sb.append(line);
sb.append('\n');
}
}
catch (IOException e)
{
e.printStackTrace();
}
String jsontext = new String(sb.toString());
url[0]
是JSON提要的url
您必须重新设置URL的格式,您现在使用的格式已被弃用
请参阅我使用此代码检索Twitter提要:
HttpClient httpclient = new DefaultHttpClient();
HttpResponse response = httpclient.execute(new HttpGet(url[0]));
InputStream is = response.getEntity().getContent();
BufferedReader br = new BufferedReader(new InputStreamReader(is,"UTF-8"));
StringBuffer sb = new StringBuffer();
try
{
String line = null;
while ((line = br.readLine())!=null)
{
sb.append(line);
sb.append('\n');
}
}
catch (IOException e)
{
e.printStackTrace();
}
String jsontext = new String(sb.toString());
url[0]
是JSON提要的url
您必须重新设置URL的格式,您现在使用的格式已被弃用
请参阅您似乎需要添加android.permission.INTERNET
<uses-permission android:name="android.permission.INTERNET" />
您似乎需要添加android.permission.INTERNET
<uses-permission android:name="android.permission.INTERNET" />
异常抛出在哪一行?如果您不知道,请尝试一步一步地调试。@user1002448您检查了我的帖子吗?@Paresh Mayani未使用。.忘记删除异常抛出在哪一行?如果您不知道,请尝试一步一步地调试。@user1002448您检查了我的帖子吗?@Paresh Mayani未使用。.忘记删除异常出现在org.apache.http.HttpResponse pingResponse=pingclient.execute(pingpost)中;只需在URL中尝试http而不是https,也可以使用HTTPGetTried…仍然相同的麻烦异常出现在org.apache.http.HttpResponse pingResponse=pingclient.execute(pingpost)中;只需在URL中尝试http而不是https,也可以使用HTTPGetTried…仍然