마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

ksoap2 로 배열 전송하는데 좀 알려주세요

0 추천
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로 받습니다 

 

익명사용자 님이 2016년 8월 9일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...