You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将指定URL的HTML内容转为String并生成JSON文件?

解决从指定URL获取响应并保存为JSON文件的问题

看起来你想要实现的是:从https://blablabla.eu/admin/autolog?format=json这个URL获取返回的JSON内容(注意你的URL参数里已经指定了format=json,所以返回的应该是JSON格式字符串,而非HTML),先将其转为String变量,再保存为本地JSON文件。你之前直接把URL对象转成字符串的做法确实不对,因为那只是输出URL本身,并没有发起网络请求获取服务器返回的响应内容。

下面是针对Android环境的完整解决方案,结合你的代码片段补充完善:

步骤1:添加必要权限

首先在AndroidManifest.xml中添加网络权限:

<uses-permission android:name="android.permission.INTERNET"/>

步骤2:发起网络请求获取响应字符串

因为Android不允许在主线程发起网络请求,这里我们用AsyncTask(如果是较新版本的Android,也可以用Coroutines或者OkHttp等库)来实现异步请求:

import android.os.AsyncTask;
import android.util.Log;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class FetchJsonTask extends AsyncTask<String, Void, String> {

    @Override
    protected String doInBackground(String... urls) {
        String urlString = urls[0];
        StringBuilder response = new StringBuilder();

        try {
            URL url = new URL(urlString);
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("GET");
            
            // 读取服务器响应
            BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            String line;
            while ((line = reader.readLine()) != null) {
                response.append(line);
            }
            reader.close();
            conn.disconnect();

        } catch (Exception e) {
            Log.e("JSON_FETCH_ERROR", "获取响应失败: " + e.getMessage());
            return null;
        }

        return response.toString();
    }

    @Override
    protected void onPostExecute(String jsonString) {
        if (jsonString != null) {
            Log.i("JSON_RESPONSE", "获取到的JSON内容: " + jsonString);
            // 在这里调用保存JSON到文件的方法
            saveJsonToFile(jsonString);
        }
    }

    // 将JSON字符串保存为本地文件的方法
    private void saveJsonToFile(String jsonString) {
        // 示例:保存到应用内部存储
        try {
            String fileName = "autolog.json";
            // 打开输出流
            java.io.FileOutputStream outputStream = getApplicationContext().openFileOutput(fileName, android.content.Context.MODE_PRIVATE);
            outputStream.write(jsonString.getBytes());
            outputStream.close();
            Log.i("JSON_SAVE_SUCCESS", "JSON文件已保存: " + getApplicationContext().getFilesDir() + "/" + fileName);
        } catch (Exception e) {
            Log.e("JSON_SAVE_ERROR", "保存文件失败: " + e.getMessage());
        }
    }
}

步骤3:调用任务执行请求

在你的Activity或者Fragment中,判断URL后启动这个异步任务:

String url = "https://blablabla.eu/admin/autolog?format=json";
Log.i("Apple", "" + url);

// 注意去掉URL前后的空格,你的代码里startsWith的参数有多余空格
if (url.startsWith("https://intra.epitech.eu/admin/autolog?format=json")) {
    Log.i("Chcolate", "YES");
    // 启动异步任务获取JSON
    new FetchJsonTask().execute(url);
}

关键说明

  • 你之前的代码只创建了URL对象,但没有发起实际的HTTP请求去读取服务器响应,所以需要通过HttpURLConnection来打开连接、读取输入流。
  • 因为URL参数指定了format=json,所以服务器返回的应该是标准JSON字符串,不需要将HTML转JSON(如果实际返回是HTML,那可能是请求有问题,比如权限验证失败)。
  • 网络操作必须在异步线程执行,否则会抛出NetworkOnMainThreadException。

内容的提问来源于stack exchange,提问作者Folamie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:02:59