【发布时间】:2014-01-27 23:32:47
【问题描述】:
这个问题可能看起来很傻,但我不想犯错。 如标题中所述,我想使用 post 方法将多个字段发送到 WS。简单地说,一个标题(一个字符串)和一个图像。 到目前为止,我已经成功发送了图像(经过很多麻烦)。
这里是安卓代码:
String urlServer = GlobalSession.IP + "insert_reportByte";
URL url = new URL(urlServer);
HttpURLConnection connection = (HttpURLConnection) url
.openConnection();
connection.setDoInput(true);
connection.setDoOutput(true);
connection.setUseCaches(false);
connection.setRequestMethod("POST");
connection.setRequestProperty("Connection", "Keep-Alive");
connection.setRequestProperty("Content-Type","multipart/form-data");
DataOutputStream outputStream = new DataOutputStream(
connection.getOutputStream());
outputStream.write(outputByteArray, 0, outputByteArray.length);
Log.d("Report", " Amount of data sent for the picture: " + outputByteArray.length);
int serverResponseCode = connection.getResponseCode();
String serverResponseMessage = connection.getResponseMessage();
outputStream.flush();
outputStream.close();
即成功将图片(outputByteArray)发送到以下WS:
public void insert_reportByte(Stream input)
{
MyEntities entities = new MyEntities();
byte[] image = new byte[30*1024];
using (MemoryStream ms = new MemoryStream())
{
int read;
while ((read = input.Read(image, 0, image.Length)) > 0)
{
ms.Write(image, 0, read);
}
}
String base64stringimage = System.Convert.ToBase64String(image,0,image.Length);
entities.insert_report("name hard coded", base64stringimage);
}
所以,我想从那个声明切换到public void insert_reportByte(String name, Stream input)。怎么做?还是我必须发送流中的所有内容,然后一一恢复传输的参数?
感谢您的提示!
【问题讨论】:
标签: android wcf web-services