上傳圖片了就會報org.apache.http.client.HttpResponseException: Not Foun
一上傳圖片就會報上面的錯, 的錯,但是圖片有地址,URL的地址是對的但是有圖片有地址的,就是上不去,斷點回傳的是404.
回覆內容:
一上傳圖片就會報上面的錯, 的錯,但是圖片有地址,URL的地址是對的但是有圖片有地址的,就是上不去,斷點回傳的是404.
404說明是客戶端的問題導致伺服器無法處理,https://segmentfault.com/a/11...
建議棄用httpclient,使用HttpURLConnection:
<code>import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import java.util.HashMap; import java.util.List; import java.util.Map; public class HttpConnector { public static final int TIMEOUT_MS = 10 * 1000; public static String performRequest(String url, File file, Map<String, String> additionalHeaders) { String response = null; try { HashMap<String, String> map = new HashMap<String, String>(); if (additionalHeaders != null) map.putAll(additionalHeaders); URL parsedUrl = new URL(url); HttpURLConnection connection = openConnection(parsedUrl, file); for (String headerName : map.keySet()) { connection.addRequestProperty(headerName, map.get(headerName)); } int responseCode = connection.getResponseCode(); if (responseCode == -1) { // -1 is returned by getResponseCode() if the response code could not be retrieved. // Signal to the caller that something was wrong with the connection. throw new IOException("Could not retrieve response code from HttpUrlConnection."); } String charset = "utf-8"; String contentEncoding = null; String contentType = null; for (Map.Entry<String, List<String>> header : connection.getHeaderFields().entrySet()) { if (header.getKey() != null) { List<String> headerValueList = header.getValue(); if (headerValueList != null && headerValueList.size() > 0) { StringBuffer headerValueSB = new StringBuffer(); for (int i = 0; i < headerValueList.size(); i++) { headerValueSB.append(headerValueList.get(i)); if (i != headerValueList.size() - 1) { headerValueSB.append(";"); } } if (header.getKey().equals("Content-Type")) { contentType = headerValueSB.toString(); } else if (header.getKey().equals("Content-Encoding")) { contentEncoding = headerValueSB.toString(); } } } } charset = parseCharset(contentType, contentEncoding, charset); if (responseCode == 200) { //成功 response = entityFromConnection(connection, charset); } } catch (Exception e) { // e.printStackTrace(); } return response; } /** * Create an {@link HttpURLConnection} for the specified {@code url}. */ protected static HttpURLConnection createConnection(URL url) throws IOException { return (HttpURLConnection) url.openConnection(); } /** * Opens an {@link HttpURLConnection} with parameters. * * @param url * @return an open connection * @throws IOException */ private static HttpURLConnection openConnection(URL url, File file) throws IOException { HttpURLConnection connection = createConnection(url); connection.setConnectTimeout(TIMEOUT_MS); connection.setReadTimeout(TIMEOUT_MS); connection.setUseCaches(false); connection.setDoInput(true); connection.setRequestMethod("POST"); addBodyIfExists(connection, file); return connection; } private static String parseCharset(String contentType, String contentEncoding, String defaultCharset) { if (contentType != null) { String[] params = contentType.split(";"); for (int i = 1; i < params.length; i++) { String[] pair = params[i].trim().split("="); if (pair.length == 2) { if (pair[0].equals("charset")) { return pair[1]; } } } } if (contentEncoding != null && !contentEncoding.equals("")) { return contentEncoding; } return defaultCharset; } private static String entityFromConnection(HttpURLConnection connection, String charset) throws IOException { String data = null; InputStream inputStream; try { inputStream = connection.getInputStream(); } catch (IOException ioe) { inputStream = null; } if (inputStream != null) { data = readData(inputStream, charset); } return data; } private static String readData(InputStream inSream, String charsetName) throws IOException { ByteArrayOutputStream outStream = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int len = -1; while ((len = inSream.read(buffer)) != -1) { outStream.write(buffer, 0, len); } byte[] data = outStream.toByteArray(); outStream.close(); inSream.close(); return new String(data, charsetName); } private static void addBodyIfExists(HttpURLConnection connection, File file) { try { if (file != null) { connection.setDoOutput(true); connection.addRequestProperty("Content-Type", "application/octet-stream; charset=utf-8"); DataOutputStream out = new DataOutputStream(connection.getOutputStream()); FileInputStream fStream = new FileInputStream(file); /* 设定每次写入1024bytes */ try { int bufferSize = 1024; byte[] buffer = new byte[bufferSize]; int length = -1; /* 从文件读取数据到缓冲区 */ while ((length = fStream.read(buffer)) != -1) { /* 将数据写入DataOutputStream中 */ out.write(buffer, 0, length); } } finally { fStream.close(); out.flush(); out.close(); } } } catch (IOException e) { e.printStackTrace(); } } }</code>
呼叫:String response = HttpConnector.performRequest(uploadUrl, file, null);

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

PHP 8.4 帶來了多項新功能、安全性改進和效能改進,同時棄用和刪除了大量功能。 本指南介紹如何在 Ubuntu、Debian 或其衍生版本上安裝 PHP 8.4 或升級到 PHP 8.4

Visual Studio Code,也稱為 VS Code,是一個免費的原始碼編輯器 - 或整合開發環境 (IDE) - 可用於所有主要作業系統。 VS Code 擁有大量針對多種程式語言的擴展,可以輕鬆編寫

本教程演示瞭如何使用PHP有效地處理XML文檔。 XML(可擴展的標記語言)是一種用於人類可讀性和機器解析的多功能文本標記語言。它通常用於數據存儲

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

字符串是由字符組成的序列,包括字母、數字和符號。本教程將學習如何使用不同的方法在PHP中計算給定字符串中元音的數量。英語中的元音是a、e、i、o、u,它們可以是大寫或小寫。 什麼是元音? 元音是代表特定語音的字母字符。英語中共有五個元音,包括大寫和小寫: a, e, i, o, u 示例 1 輸入:字符串 = "Tutorialspoint" 輸出:6 解釋 字符串 "Tutorialspoint" 中的元音是 u、o、i、a、o、i。總共有 6 個元

靜態綁定(static::)在PHP中實現晚期靜態綁定(LSB),允許在靜態上下文中引用調用類而非定義類。 1)解析過程在運行時進行,2)在繼承關係中向上查找調用類,3)可能帶來性能開銷。

PHP的魔法方法有哪些? PHP的魔法方法包括:1.\_\_construct,用於初始化對象;2.\_\_destruct,用於清理資源;3.\_\_call,處理不存在的方法調用;4.\_\_get,實現動態屬性訪問;5.\_\_set,實現動態屬性設置。這些方法在特定情況下自動調用,提升代碼的靈活性和效率。
