gpt4 book ai didi

Android:使用 POST 在 JSON 中发送字节数组

转载 作者:搜寻专家 更新时间:2023-11-01 09:10:36 24 4
gpt4 key购买 nike

我有一个带有 JSON POST 方法的 JSON 服务器 (WCF REST),该方法接受包含 id(字符串)和图像(byte[])的对象:

    [DataContract(Name = "image")]
public class CustomImage
{
[DataMember(Name = "id")]
public string Id { get; set; }
[DataMember(Name = "imagestream")]
public byte[] ImageStream { get; set; }
}

我已经成功地使用以下代码从 C# 控制台应用程序向服务器发送数据:` byte[] bytearray = null;

        Stream stream = File.OpenRead(@"c:\temp\snow.jpg");
stream.Seek(0, SeekOrigin.Begin);
bytearray = new byte[stream.Length];
int count = 0;
while (count < stream.Length)
{
bytearray[count++] = Convert.ToByte(stream.ReadByte());
}

CustomImage image = new CustomImage {Id = "43"};
image.ImageStream = bytearray;
WebClient Proxy1 = new WebClient();

Proxy1.Headers["Content-type"] = "application/json";
MemoryStream ms = new MemoryStream();
DataContractJsonSerializer serializerToUpload = new DataContractJsonSerializer(typeof (CustomImage));
serializerToUpload.WriteObject(ms, image);
byte[] data = Proxy1.UploadData("http://localhost:5465/MyService/file/post", "POST", ms.ToArray());`

但我无法在我的 Android 应用程序中使用它。我正在使用以下代码:` public boolean UploadImage(String id, byte[] imageData) throws JSONException, UnsupportedEncodingException { BasicHttpContext localContext = new BasicHttpContext(); DefaultHttpClient httpClient = getHttpClient();

    HttpResponse response = null;
HttpPost httpost = null;

String url = String.format("file/post");
url = String.format("%s/%s", API_ROOT, url);

httpost = new HttpPost(url);

//JSONArray jsonArray = new JSONArray();
//for(int i=0;i<imageData.length;i++) {
// jsonArray.put(imageData[i]);
//}

JSONObject data = new JSONObject();
data.put("id", id);
data.put("imagestream", imageData);
data.put("imagestream", jsonArray);


StringEntity se = null;
se = new StringEntity(data.toString());

httpost.setEntity(se);

response = null;
httpost.setHeader("Accept", "application/json");
httpost.setHeader("Content-type", "application/json");

try {

response = httpClient.execute(httpost, localContext);
} catch (ClientProtocolException e) {
// System.out.println("HTTPHelp : ClientProtocolException : " +
// e);
} catch (IOException e) {
// System.out.println("HTTPHelp : IOException : " + e);
}

if (response != null && response.getStatusLine() != null
&& response.getStatusLine().getStatusCode() == 200) {

return true;
}
return false;
}

但我得到的只是:

`无法反序列化请求正文。预期来自命名空间“”的结束元素 imageStream。找到文本“[B@406bb748”。

最佳答案

检查你的图像。提交前可能需要进行Base64编码。

关于Android:使用 POST 在 JSON 中发送字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8578078/

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