Я хочу отправить изображение, используя изображение библиотеки ksoap2, снятое камерой:
public class testwebservice extends Activity implements OnClickListener {
/** Called when the activity is first created. */
private static final String SOAP_ACTION="http://axis2.soap.webservice.vogella.de/getNumberResponse";
private static final String METHOD_NAME="getNumberResponse";
private static final String NAMESPACE="http://axis2.soap.webservice.vogella.de/";
private static final String URL="http://192.168.0.178:8080/Randomnumber/services/RandomNumber.RandomNumberHttpEndpoint/";
ImageView imv;
TextView tv;
Bitmap bmp;
int i;
final static int CAMERA_RESULT = 0;
Button upload;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tv = (TextView)findViewById(R.id.text1);
upload = (Button)findViewById(R.id.upload);
upload.setOnClickListener(this);
Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(i, CAMERA_RESULT);
}
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
if (resultCode == RESULT_OK)
{
Bundle extras = intent.getExtras();
bmp = (Bitmap) extras.get("data");
imv = (ImageView) findViewById(R.id.ReturnedImageView);
imv.setImageBitmap(bmp);
}
}
}
Затем у меня есть AlertDialog
, который спрашивает меня, хочу ли я отправить изображение или нет, тогда я звонюФактическая функция, которая преобразует изображение с помощью Marshallbase64
:
public void testWebService() {
MarshalBase64 b = new MarshalBase64();
ByteArrayOutputStream out = new ByteArrayOutputStream();
bmp.compress(CompressFormat.PNG, 100, out);
byte[] imagebyte = out.toByteArray();
SoapObject Request = new SoapObject(NAMESPACE, METHOD_NAME);
Request.addProperty("image",imagebyte);
SoapSerializationEnvelope soapEnvelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
soapEnvelope.dotNet=true;
soapEnvelope.setOutputSoapObject(Request);
b.register(soapEnvelope);
HttpTransportSE aht=new HttpTransportSE(URL);
try
{
aht.call(SOAP_ACTION, soapEnvelope);
SoapPrimitive response = (SoapPrimitive)soapEnvelope.getResponse();
tv.setText("REZULTAT:"+response);
}
catch(Exception e)
{
e.printStackTrace();
}
}
Я сделал веб-сервис с использованием Eclipse WTP и Axis2, это простой метод, который возвращает случайные числа:
package de.vogella.webservice.soap.axis2;
import java.util.Random;
public class RandomNumber {
public float[] getNumber(byte[] image){
float u[] = new float[8];
for(int i = 0; i < 8; i++) {
u[i] = new Float(i);
Random random = new Random();
u[i]= random.nextFloat();
}
return u;
}
}
ВсеМне нужно сделать, это связать эти три, и моя работа сделана.Может кто-нибудь помочь, пожалуйста?