2014-03-28 96 views
0
接收web服务

我发送的字节[]和3串的图像到web服务usingksoap但它不是为我工作,我不知道我在哪里错了,从发送图像Android和在接收端,我在这里将代码查收它 这里是我如何转换图像在客户端为byte [](机器人)侧发送以Base64字符串图像,并通过KSOAP

Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath()); 
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); 
myBitmap.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream); 
byte[] byteArray = byteArrayOutputStream .toByteArray(); 
String encoded = Base64.encodeToString(byteArray, Base64.DEFAULT); 

和这里是代码,其中i通过KSOAP

我把它发送到Web服务

和这里是我收到这个SOAP信封

[WebMethod] 
    public String PutFile(String Name, String Email, String Picture, String Date) 
     { 

String PictureByteString = Picture; 
Image imgFromString = SaveByteArrayAsImage(PictureByteString); 
DateTime.Now.ToShortDateString() + ".jpg")); 
string serverpath = Server.MapPath("~/" + Email + "-" + DateTime.Now.ToShortDateString()); 
imgFromString.Save(serverpath, System.Drawing.Imaging.ImageFormat.Jpeg); 
String Path = serverpath + ".Jpeg"; 


      return Name; 
     } 

private Image SaveByteArrayAsImage(string base64String) 
{ 
byte[] bytes = Convert.FromBase64String(base64String); 

image; 
using (MemoryStream ms = new MemoryStream(bytes)) 
{ 
image = Image.FromStream(ms); 
} 

return image; 

} 

将WebMethod当我将数据发送到web服务的Android logcat的显示我

java.io.IOException: HTTP request failed, HTTP status: 500 

我是这么认为的,这意味着数据我是发送到web服务是不正确的类型,所以我试图在webmethod String Picturebyte[] Picture但结果是一样的。我不能够揣摩出我错了......

更新: 现在发送图像中的Base64编码字符串和Java异常消失,但将WebMethod仍然不是Base64编码字符串转换为图像.. 。

+0

500 meance服务器不连接,你需要先尝试不通过图像,如果它的工作,然后通过图像,如果你用base64甲发送图像,然后它的更好,然后的byte [] – PankajAndroid

+0

让我尝试没有图像通过图像... 。 –

+0

@PankajAndroid:我删除了这一行“new MarshalBase64()。register(envelope);”并添加了“字符串编码= Base64.encodeToString(byteArray,Base64.DEFAULT);”转换的byte []到b中ase64字符串,异常现在已经和的WebMethod正确获取数据,但它不是字符串转换回图像..请参阅有关 –

回答

0

这是我做到了。传递给函数
参数为Base64编码字符串

public string SendImage(string data) 
    { 
     byte[] myarray = Convert.FromBase64String(data); 
     MemoryStream memStream = new MemoryStream(myarray); 
     Image myimage = Image.FromStream(memStream); 
     myimage.Save("G:\\image.png", ImageFormat.Png); 
     return "succeeded"; 
    } 

这是工作完美的我,希望它可以帮助。

+0

更新一年前我解决了这个问题:-P但由于对于输入,它可以帮助许多人... –

+0

哈哈哈,我认为即时通讯相当晚了太多的xD 钻进这个刚刚.. BTW,如何真正从.NET Web服务上以“形式发送图像的任何想法C#图像“不是向android的字节数组,反之亦然??! –