如何在Android中使用WCF服务检索图像

时间:2014-07-03 07:07:52

标签: android wcf

当我尝试从JSONobject读取值时,我在Bitmap解码流中获得空值。我不知道我犯了什么错误。请尝试找出我的错误或为我的问题提供替代解决方案。在JSONObject字符串中我得到了值!..在DB图像中,值被存储为图像类型并在WCF中作为byte []接收。有关更多信息,请查看以下代码。

Android代码:

     protected Bitmap doInBackground(String... params) {
        // TODO Auto-generated method stub
        empID=params[0];
        sendUrl="http://192.168.1.11:5252/RestServiceImpl.svc/signed?empid="+empID;
        try {
            HttpClient httpClient = new DefaultHttpClient();
            HttpGet httpRequest = new HttpGet(sendUrl);
            HttpResponse response = httpClient.execute(httpRequest);

            BufferedReader inStream = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
            StringBuffer buffer = new StringBuffer("");
            String line = "";
            String NL = System.getProperty("line.separator");
            while ((line = inStream.readLine()) != null) {
                buffer.append(line + NL);

            }

            inStream.close();
            String result = buffer.toString();  
            JSONObject obj = new JSONObject(result);
            //String pageName = obj.getJSONObject("EmployeeID").getString("pageName");

            Iterator<?> keys = obj.keys();

            while( keys.hasNext() ){
                String key = (String)keys.next();
                Object jsonEntity= obj.get(key);
                String SignatureLink= jsonEntity.toString();
                String newString = SignatureLink.replace("data:image/png;base64,","");                  
                //byte[] image= jsonEntity.toString().getBytes();               
                InputStream stream = new     ByteArrayInputStream(Base64.decode(newString.getBytes(), Base64.DEFAULT));

                Bitmap bitmap = BitmapFactory.decodeStream(stream);// Getting Null Value

                imageView.setImageBitmap(bitmap);
                //imageView.refreshDrawableState();
                return bitmap;
        } 
        }
            catch (Exception e) {
            // TODO: handle exception
            return null;
        }

        return null;            
    }

WCF接口:

      [OperationContract]
    [WebGet(
        ResponseFormat = WebMessageFormat.Json,
        BodyStyle = WebMessageBodyStyle.Wrapped,
        UriTemplate = "/signed?empid={empid}")]
    byte[] signedornot(string empid);

WCF实施:

   public byte[] signedornot(string empid) {



        DataSet EmpID = db.ExecuteDataset("select Signature from emp_tb_eob_Employee where EmployeeID=" + Convert.ToInt32( empid));
        byte[] signature= (byte[])EmpID.Tables[0].Rows[0]["Signature"];
        if (signature == null)
        {
            return null;
        }
        else {
            return signature;
        }

0 个答案:

没有答案
相关问题