gpt4 book ai didi

java通过http get发送图像不起作用

转载 作者:行者123 更新时间:2023-12-01 12:16:07 25 4
gpt4 key购买 nike

我正在尝试使用 http get 请求将 png 发送到服务器。我正在使用下面的代码来实现这一点。
字符串编码(在客户端):

byte[] bytes = Files.readAllBytes(Paths.get(chosenFile.getPath()));
String image = new String(bytes, "ISO-8859-1");

然后我使用字符串图像向服务器发送 http get 请求。服务器收到它,但我得到的图像与我发送的图像不同(我无法打开收到的图像)。我正在使用 URLEncoder.encode(image, "ISO-8859-1") 对 http get 请求的 url 进行编码。当我使用 URLEncoder.encode(image, "UTF-8") 时,也会发生同样的情况。

为什么这不起作用?有没有更好的方法来做这种事情?

UPD #0

发送图像的代码:

private void jMenuItem5ActionPerformed(java.awt.event.ActionEvent evt) {                                           
JFileChooser chooser= new JFileChooser();
int choice = chooser.showOpenDialog(this);

if (choice != JFileChooser.APPROVE_OPTION) return;
File chosenFile = chooser.getSelectedFile();

try {
byte[] bytes = Files.readAllBytes(Paths.get(chosenFile.getPath()));
String image = new String(bytes, "ISO-8859-1");

if(image != null){
boolean allsent = false;
long k = 0;
String query = "0";
while(!allsent){
String s = image;
String send = "";
long q;
if(k+400>image.length()){
q=image.length();
allsent=true;
}
else q = k+400;
for(long i=k;i<q;i++)
send+=s.charAt((int) i);
System.out.println(send);
String response = new HTTP().GET(Constants.ADDRESS_ADDIMAGE
+ "?" + Constants.USERNAME + "=" + URLEncoder.encode(user, "UTF-8")
+ "&" + Constants.IMAGE + "=" + URLEncoder.encode(send, "ISO-8859-1")
+ "&" + Constants.QUERY + "=" + URLEncoder.encode(query, "UTF-8"));
k+=400;
query="1";
}
}
} catch (IOException ex) {
ex.printStackTrace();
}

}

注意:HTTP().GET() 调用标准 http get。

UPD#1服务器代码

@GET
@Path("/addimage")
@Produces(MediaType.APPLICATION_JSON)
public String addImage(@QueryParam("username") String uname, @QueryParam("image") String image, @QueryParam("query") String query) {
if(query.equals("0")){
String s = image;
JDBC.addImage("ABase", "MarketLogin", "image", uname, s);
}
else{
String s = JDBC.selectDB("ABase", "MarketLogin", "image", uname, "username") + image;
JDBC.addImage("ABase", "MarketLogin", "image", uname, s);
}
return "1";
}

注意:JDBC是用于更新mysql DB的类。服务器需要使用 ISO-8859-1 编码的字符串。

最佳答案

使用 HttpURLConnection 怎么样?并发送字节而不是字符串。

HttpURLConnection connection;
ByteArrayOutputStream baos;
try {
URL url = new URL("http://www.somewebsite.com");
connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
connection.setRequestProperty("Content-Type", "image/jpeg");
connection.setRequestMethod("POST");

baos = new ByteArrayOutputStream();
baos.write(bytes); // your bytes here
baos.writeTo(connection.getOutputStream());
}
finally {
if(baos != null)
baos.close();
if(osw != null)
osw.close();
if(connection != null)
connection.disconnect();
}

关于java通过http get发送图像不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27003551/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com