public class MainActivity extends AppCompatActivity {
ImageView iv;
final int REQ_CODE_SELECT_IMAGE=100;
byte[] aa;
TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
iv=(ImageView)findViewById(R.id.imageView);
tv=(TextView)findViewById(R.id.textView);
}
public void selectimage(View v) //이미지 선택 이벤트
{
Intent intent = new Intent(Intent.ACTION_PICK);
intent.setType(android.provider.MediaStore.Images.Media.CONTENT_TYPE);
intent.setData(android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent, REQ_CODE_SELECT_IMAGE);
}
public void registproblem(View v) //문제 등록 이벤트
{
mktest x=new mktest();
x.execute();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Toast.makeText(getBaseContext(), "resultCode : "+resultCode,Toast.LENGTH_SHORT).show();
if(requestCode == REQ_CODE_SELECT_IMAGE)
{
if(resultCode== Activity.RESULT_OK)
{
try {
//Uri에서 이미지 이름을 얻어온다.
//String name_Str = getImageNameToUri(data.getData());
//이미지 데이터를 비트맵으로 받아온다.
Bitmap image_bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), data.getData());
ImageView image = (ImageView)findViewById(R.id.imageView);
//배치해놓은 ImageView에 set
image.setImageBitmap(image_bitmap);
aa= bitmapToByteArray(image_bitmap);
//Toast.makeText(getBaseContext(), "name_Str : "+name_Str , Toast.LENGTH_SHORT).show();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e)
{
e.printStackTrace();
}
}
}
}
public class mktest extends AsyncTask<String,String,String> {
@Override
protected String doInBackground(String... params) {
SoapObject request = new SoapObject("http://tempuri.org/", "UploadImg2"); // 네임스페이스 메소드 이름
request.addProperty("img", Base64.encode(aa)); //이미지
request.addProperty("unit",1); //단원 번호
////////////////////////////////////////////////////////////////////////////////////
for(int i=0;i<2;i++)
{
request.addProperty("concept",i);
}
////////////////////////////////////////////////////////////////////////////////////
request.addProperty("answer",2); //정답
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.setOutputSoapObject(request);
envelope.dotNet = true;
HttpTransportSE androidHttpTransport = new HttpTransportSE("http://192.168.33.49:11000/Service"); //url
try {
androidHttpTransport.call("http://tempuri.org/IService/UploadImg2", envelope); //soap의 액션
Object result = envelope.getResponse();
String wq = result.toString();
Boolean tur = (wq != "true");
return wq;
} catch (Exception e) {
e.printStackTrace();
return e.getLocalizedMessage();
}
}
protected void onPostExecute(String result)
{
super.onPostExecute(result);
tv.setText(result);
}
}
public byte[] bitmapToByteArray( Bitmap $bitmap ) {
ByteArrayOutputStream stream = new ByteArrayOutputStream() ;
$bitmap.compress( Bitmap.CompressFormat.JPEG, 100, stream) ;
byte[] byteArray = stream.toByteArray() ;
return byteArray ;
}
}
위처럼 코드가 작성되었고

이 사진이 제가 보내고싶은 모양입니다
<arr:int>로 보내야하는것같은데
일단 위 코드로 실행하면
오류코드가
메시지를 역직렬화하는 동안 포맷터에서 예외가 발생했습니다. 'UploadImg2' 작업에 대한 요청 메시지의 본문을 역직렬화하는 동안 오류가 발생했습니다. 네임스페이스 'http://tempuri.org/'의 끝 요소 'concept'이(가) 필요한데 텍스트 '0'을(를) 찾았습니다. 선 347, 위치 65.' faultactor: 'null' detail: null
처럼 뜹니다
혹시 배열 문제 해결해보신분 있나요?
상대쪽 서비스는 concept를 int[]concept로 받습니다