簡體   English   中英

通過Base64字符串發送圖像並通過kSoap在Web服務中接收

[英]Sending Image in Base64 String and receiving in webservice via kSoap

我正在使用kso​​ap將字節[]和3個字符串的圖像發送到Web服務,但對我不起作用,我不確定我錯了,在從Android發送圖像以及在接收端,我將代碼放在這里進行檢查這是我如何在客戶端(Android)端將圖像轉換為byte []

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);

這是我通過Ksoap將其發送到webservice的代碼

SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
request.addProperty("Name", name);
request.addProperty("Email", email);
request.addProperty("Picture", encoded );
request.addProperty("Date", date);

SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);

envelope.dotNet = true;
envelope.setOutputSoapObject(request);
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
androidHttpTransport. call(SOAP_ACTION, envelope);

SoapPrimitive result = (SoapPrimitive) envelope.getResponse();
String str = result.toString();

這是webMethod,我正在接收這個肥皂信封

  [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;

}

當我將數據發送到Web服務時,Android LogCat向我顯示

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

我認為是這樣,這意味着我要發送到Web服務的數據的類型不正確,因此我嘗試將String Picture轉換為WebMethod中的byte[] Picture ,但結果是相同的。 我無法弄清楚哪里錯了...

更新:現在以Base64字符串發送圖像並且java異常消失了,但是web方法仍然沒有將該Base64字符串轉換為圖像...

這就是我做到的。
傳遞給函數的參數是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";
    }

這對我來說是完美的,希望對您有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM