如何将curl命令转换为Android Java中可用的HttpURLConnection请求代码
实现方案
前置准备
- 在
AndroidManifest.xml中添加网络权限:<uses-permission android:name="android.permission.INTERNET" /> - 所有网络请求必须在子线程中执行,不能直接写在主线程中,否则会抛出
NetworkOnMainThreadException异常
对应curl请求的HttpURLConnection实现代码
// 替换为你自己的实际API密钥 private static final String API_KEY = "你的实际API_KEY"; public void sendCurlRequest() throws Exception { String stringURL = "https://www.website.com/api/a/page"; URL url = new URL(stringURL); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); try { // 对应curl的 -X GET,设置请求方法为GET urlConnection.setRequestMethod("GET"); // 对应curl的 -H "Authorization: Bearer API_KEY",添加鉴权请求头 urlConnection.setRequestProperty("Authorization", "Bearer " + API_KEY); // 对应curl的 -H "Content-Type: application/json",添加内容类型请求头 urlConnection.setRequestProperty("Content-Type", "application/json"); // 可按需设置超时时间,单位为毫秒 urlConnection.setConnectTimeout(15000); urlConnection.setReadTimeout(15000); // 获取接口返回数据流 InputStream in = new BufferedInputStream(urlConnection.getInputStream()); // 以下是将流转为字符串的示例代码,可根据需求自行调整 BufferedReader reader = new BufferedReader(new InputStreamReader(in)); StringBuilder result = new StringBuilder(); String line; while ((line = reader.readLine()) != null) { result.append(line); } // responseStr即为接口返回的完整响应内容 String responseStr = result.toString(); } finally { // 请求完成后必须关闭连接,避免资源泄漏 urlConnection.disconnect(); } }
扩展:POST类型curl请求转换方案
如果后续需要转换POST类型的curl请求,只需调整以下配置即可:
- 将
urlConnection.setRequestMethod("GET")改为urlConnection.setRequestMethod("POST") - 添加配置
urlConnection.setDoOutput(true) - 把POST请求体写入连接的输出流,示例如下:
// 替换为你自己的实际请求体内容 String postBody = "{\"name\":\"test\",\"id\":1}"; OutputStream os = urlConnection.getOutputStream(); os.write(postBody.getBytes(StandardCharsets.UTF_8)); os.flush(); os.close();
内容的提问来源于stack exchange,提问作者Sleepless
相关产品推荐
相关产品推荐

