【问题标题】:Sending Image as a byte[] as a web service method arguments将图像作为 byte[] 作为 Web 服务方法参数发送
【发布时间】:2014-05-31 17:15:43
【问题描述】:

我面临一个问题,当我发送一个小字节数组时

byte[] s = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };

然后它将成功接收并插入数据库,但是当涉及到转换为字节[]的图像字节数组时,我将显示异常

“请求失败,HTTP 状态 404:未找到。”

它没有显示“超出最大限制”或类似的东西。我该怎么办? 这是屏幕截图

它发送被注释的字节数组,但参数中的数组是转换为字节数组的位图。

- 已编辑

这里是web服务中接收端的代码

 [WebMethod]
 public bool TakeScreenShotResponseBack(string ip, byte[] screenShot)
    {
        dbOpts = new DatabaseOperation();

        if (dbOpts.InsertBitmapResponse(ip, screenShot))
            return true;
        else
            return false;
    }

这里是发送方代码

    public bool ScreenShotResponse(string ip, byte[] ss)
    {
        response = new MyService.MasterWebService();
        try
        {
            //byte[] s = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
            if (response.TakeScreenShotResponseBack(ip, ss))
                return true;
            else
                return false;
        }
        catch
        {
            return false;
        }
    }

【问题讨论】:

  • 仅供参考 - 发布代码和完整的异常详细信息比屏幕截图好得多。
  • 我已经发布了@Jon B
  • 谢谢。我认为 jalgames 正在做某事。我会尝试更改为 base64 字符串而不是 byte[]。旁注:你正在做if (true) { reutrn true; } else { return false; },这有点傻(只是返回你的网络方法调用的结果)。
  • 好的 :P 谢谢指正

标签: c# asp.net web-services system.net.webexception


【解决方案1】:

我自己也遇到了这个问题,原因似乎是非 base64 编码的图像可能包含终止发布请求等的字节,因此该请求将无效。

另一个原因可能是您的网络提供商。我尝试过的一个免费主机不起作用,但是当我在不改变一行的情况下转移到另一个主机时,一切都运行良好。

我推荐你使用 RestSharp:

RestRequest request = new RestRequest("url", Method.POST);
request.AddParameter("image",  Convert.ToBase64String(imagestream.ToArray());
RestClient client = new RestClient();
client.ExecuteAsync(request, (response) =>
{
    //Do something with the response
}

【讨论】:

  • 直到现在我还没有托管我的代码......只是完成它......它会工作吗? bcz m 使用网络服务?
【解决方案2】:

尝试用这个转换你的图像:

  public byte[] FileToByteArray(string fileName)
  {

       byte[] buff = null;

       if (fileName != null && fileName != "" && File.Exists(fileName))

       {

          buff = File.ReadAllBytes(fileName);

       }
        return buff;
    }

在我的数据库中,图片的列是图像类型。我遇到了同样的问题,我用这个解决了它。

【讨论】:

  • 我必须转换的图像已经在位图中,我没有从 HDD 读取它,bcz 我的代码截取了屏幕截图,我必须将其转换为字节。请问还有什么建议吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多