a179583637 2016-06-16 09:35 采纳率: 0%
浏览 1225
已结题

调用外部API不成功,显示的什么执行时间长,我实在解决不了了

下面是我的util
package textview.exam;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

/**

  • Created by fei on 2016/6/16.
    */
    public class Shishinews {
    String httpUrl = "http://apis.baidu.com/songshuxiansheng/news/news";
    String httpArg = "";
    String jsonResult = request(httpUrl, httpArg);
    //System.out.println(jsonResult);

    /**

    • @param urlAll
    • :请求接口
    • @param httpArg
    • :参数
    • @return 返回结果
      */
      public static String request(String httpUrl, String httpArg) {
      BufferedReader reader = null;
      String result = null;
      StringBuffer sbf = new StringBuffer();
      httpUrl = httpUrl + "?" + httpArg;

      try {
      URL url = new URL(httpUrl);
      HttpURLConnection connection = (HttpURLConnection) url
      .openConnection();
      connection.setRequestMethod("GET");
      // 填入apikey到HTTP header
      connection.setRequestProperty("apikey", "f761aa7e1d7b5ebe4******");
      connection.connect();
      InputStream is = connection.getInputStream();
      reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
      String strRead = null;
      while ((strRead = reader.readLine()) != null) {
      sbf.append(strRead);
      sbf.append("\r\n");
      }
      reader.close();
      result = sbf.toString();
      } catch (Exception e) {
      e.printStackTrace();
      }
      return result;
      }

}

下面是我fragment的代码
package textview.exam;

import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;

import org.json.JSONException;
import org.json.JSONObject;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class FragmentMainchatnews extends Fragment {
String httpUrl = "http://apis.baidu.com/songshuxiansheng/news/news";
String httpArg = "";
private String[] title;//新闻标题
private String[] abs;//新闻简介
private String[] image_url;//图片链接地址
Thread thread = null;

String newsjson;

@Override
public void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
}

@Override
public View onCreateView(LayoutInflater inflater,
                         @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    View view=inflater.inflate(R.layout.main_chat_news, null);
    return view;
}

// 开启线程得到答案
Runnable runnable = new Runnable() {
@Override
public void run() {
newsjson = Shishinews.request(httpUrl, httpArg);
Log.v("debug",newsjson);
Message message = new Message();
message.what = 1;// 标志是哪个线程传数据

    }
};
@SuppressLint("HandlerLeak")
class MyHandler extends Handler {
    // 接受message的信息
    @Override
    public void handleMessage(Message msg) {
        super.handleMessage(msg);
        try {
            JSONObject object = new JSONObject(newsjson);
            newsjson = object.get("retDate").toString();

        } catch (JSONException e) {
            e.printStackTrace();
        }
        if (msg.what == 1) {
            // 创建一个List集合,List集合的元素是Map
            List<Map<String, Object>> listItems = new ArrayList<Map<String, Object>>();
            for (int i = 0; i < title.length; i++) {
                Map<String, Object> listItem = new HashMap<String, Object>();
                listItem.put("image", image_url[i]);
                listItem.put("title", title[i]);
                listItem.put("abs", abs[i]);
                listItems.add(listItem);
            }
            // 创建一个SimpleAdapter
            SimpleAdapter simpleAdapter = new SimpleAdapter(getActivity(), listItems,R.layout.simple_item,
                    new String[]{"image", "title", "abs"},
                    new int[]{R.id.image, R.id.title ,R.id.abs});
            ListView list = (ListView) getView().findViewById(R.id.chat_news);
            // 为ListView设置Adapter
            list.setAdapter(simpleAdapter);
            // 为ListView的列表项的单击事件绑定事件监听器
            list.setOnItemClickListener(new AdapterView.OnItemClickListener()
            {
                // 第position项被单击时激发该方法
                @Override
                public void onItemClick(AdapterView<?> parent, View view,
                                        int position, long id)
                {
                    Intent intent=new Intent(getActivity(),ChatActivity.class);
                    startActivity(intent);
                }
            });
            // 为ListView的列表项的选中事件绑定事件监听器
            list.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
            {
                // 第position项被选中时激发该方法
                @Override
                public void onItemSelected(AdapterView<?> parent, View view,
                                           int position, long id)
                {
                    System.out.println(title[position]
                            + "被选中了");
                }
                @Override
                public void onNothingSelected(AdapterView<?> parent)
                {
                }
            });

        }
    }
}
public void sendMessage() {
    if (getView().findViewById(R.id.chat_news)==null) {
        Toast.makeText(getActivity(), "下拉刷新",
                Toast.LENGTH_SHORT).show();
    } else {
        // 创建一个List集合,List集合的元素是Map
        List<Map<String, Object>> listItems = new ArrayList<Map<String, Object>>();
        for (int i = 0; i < title.length; i++) {
            Map<String, Object> listItem = new HashMap<String, Object>();
            listItem.put("image", image_url[i]);
            listItem.put("title", title[i]);
            listItem.put("abs", abs[i]);
            listItems.add(listItem);
        }
        thread = new Thread(runnable);
        thread.start();
    }
}

}
下面是我AndroidMainfest.xml中的代码
<?xml version="1.0" encoding="utf-8"?>
package="textview.exam" >

<!-- 添加权限 -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.READ_PROFILE" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />



<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".LoginActivity"
        android:label="@string/title_activity_login"
        android:windowSoftInputMode="adjustResize|stateHidden" >
    </activity>
    <activity
        android:name=".ChatActivity"
        android:label="@string/title_activity_chat" >
        android:labl="聊天"
    </activity>

    <meta-data
        android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version" />
</application>

该有的权限我应该都设置了,可是还是不成功,大神们啊,这个我是解决不了了,就想获取个简单的新闻,我连什么关键词都没有

  • 写回答

1条回答 默认 最新

  • yu954663801 2016-06-20 06:03
    关注
                     //是URL回传超时
                        String httpUrl = "http://apis.baidu.com/songshuxiansheng/news/news?apikey=****";
                        URL myURL = new URL("http://localhost:8888/SwitchDemo/QueryCompany/SubmitBatchTest2.jsp");
            URLConnection ucon = myURL.openConnection();  
            InputStream is = ucon.getInputStream();  
            int size=is.available();
            byte[] buf=new byte[size];
            is.read(buf);
            is.close();
            String outStr=new String(buf,"utf-8");
    
    评论

报告相同问题?

悬赏问题

  • ¥15 逻辑谓词和消解原理的运用
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败