2014-03-28 134 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的字節數組,反之亦然??! –