当我尝试从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;
}