java - 如何使用HTTP-GET连接输入用户名和密码访问API

标签 java android http http-get

我使用 API 获取连接信息,但我无法从此 API 获取数据,因为我不知道如何使用 HTTP 获取连接并输入用户名和密码来访问此数据。

主要

String url = "http://flightxml.flightaware.com/json/FlightXML2/";
    @SuppressLint("NewApi")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    StrictMode.ThreadPolicy policy = new StrictMode.
    ThreadPolicy.Builder().permitAll().build();
    StrictMode.setThreadPolicy(policy); 

    TextView txt1 = (TextView)findViewById(R.id.textView1);

    String result  = HttpGet(url);
    txt1.setText(result);
                   }
    // Connect Http Get //
    public String HttpGet(String url) {
    StringBuilder builder = new StringBuilder();
    HttpClient client = new DefaultHttpClient();
    HttpGet httpGet = new HttpGet(url);

    try {
    HttpResponse response = client.execute(httpGet);
    StatusLine statusLine = response.getStatusLine();
    int statusCode = statusLine.getStatusCode();
    if (statusCode == 200) { // Status OK
    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);}
    } else {
    Log.e("Log", "Failed to download result..");
    }
    } catch (ClientProtocolException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    }
    return builder.toString(); }}

在浏览器中我可以输入用户名和密码,但在 Android 应用程序中我不知道如何输入。与此图片相同。

http://i.stack.imgur.com/63EBI.jpg

最佳答案

假设您的目标 API 需要基本身份验证,您需要将凭据添加到请求中,如下所示:

String user = "username";
String pwd = "password";
httpGet.addHeader("Authorization", "Basic " + Base64.encodeToString((user + ":" + pwd).getBytes(), Base64.NO_WRAP));

关于java - 如何使用HTTP-GET连接输入用户名和密码访问API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21967433/

相关文章:

找不到JAVA renjin函数

android - AndEngine 强制关闭加载示例

android - JAudioTagger 和 Android - 更改 mp3 中的值?

android - zxing库无法解析

java - 尝试重用Java客户端套接字失败

java - 在 JFrame 中创建快捷方式

时区偏移量的 java.time DateTimeFormatter 模式

Java 8 map 签名 : public<U> Optional<U> map(Function<? super T, ? extends U> mapper)--为什么有两个U?

javascript - 判断当前环境和请求来源——需要定义变量

ruby-on-rails - 在 Rails XML 请求中将方法设置为 PUT