【问题标题】:How can i send multipart form data in web service with usertoken如何使用 usertoken 在 Web 服务中发送多部分表单数据
【发布时间】:2025-12-26 06:55:15
【问题描述】:

我使用 post tokenid 向 webservice 发送多部分数据,我在 webservice 中获取错误消息

请登录,但我发布了我的 tokenid 及其即将填写的内容。

下面是我的代码;

             conn = (HttpURLConnection) url.openConnection(); 
             conn.setDoInput(true); 
             conn.setDoOutput(true); 
             conn.setUseCaches(false); 
             conn.setRequestMethod("POST");

             conn.setRequestProperty("token", ""+token2);
             conn.setRequestProperty("type", "album");

             conn.setRequestProperty("platform", "android");
             conn.setRequestProperty("version", ""+versionName);
             conn.setRequestProperty("image", ""+imagepath);
             conn.setRequestProperty("Connection", "Keep-Alive");
             conn.setRequestProperty("ENCTYPE", "multipart/form-data");
             conn.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary);

【问题讨论】:

  • 使用 Square 的 android 改造库。这将使您的生活更轻松。
  • 你检查过我的解决方案吗

标签: android request http-post httprequest multipartform-data


【解决方案1】:

我认为你必须这样工作

public void connectForMultipart() throws Exception {
    con = (HttpURLConnection) ( new URL(url)).openConnection();
    con.setRequestMethod("POST");
    con.setDoInput(true);
    con.setDoOutput(true);
    con.setRequestProperty("Connection", "Keep-Alive");
    con.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary);
    con.connect();
    os = con.getOutputStream();
}

public void addFormPart(String paramName, String value) throws Exception {
    writeParamData(paramName, value);
}

public void addFilePart(String paramName, String fileName, byte[] data) throws Exception {
    os.write( (delimiter + boundary + "\r\n").getBytes());
    os.write( ("Content-Disposition: form-data; name=\"" + paramName +  "\"; filename=\"" + fileName + "\"\r\n"  ).getBytes());
    os.write( ("Content-Type: application/octet-stream\r\n"  ).getBytes());
    os.write( ("Content-Transfer-Encoding: binary\r\n"  ).getBytes());
    os.write("\r\n".getBytes());

    os.write(data);

    os.write("\r\n".getBytes());
}   
public void finishMultipart() throws Exception {
    os.write( (delimiter + boundary + delimiter + "\r\n").getBytes());
}

我已将 Content-Type: application/octet-stream\r\n" 更改为 Content-Type: image/jpeg\r\n\r\n 并且成功了 :)

【讨论】: