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

ksoap2로 이미지 파일 전송중 문제가 생겼습니다

0 추천
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.AsyncTask;
import android.provider.MediaStore;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import org.kobjects.base64.Base64;
import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.MarshalBase64;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;

import java.io.ByteArrayOutputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class MainActivity extends AppCompatActivity {
    ImageView iv;
    TextView tv;

    byte[] img;     //이미지 파일
    int unit=1;   //유닛번호
    int[] conncept=new int[]{30}; //단위 지식 번호
    int answer=5;     //정답
    String explain="a";     //설명



    @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);
        iv=(ImageView)findViewById(R.id.imageView);


    }
    public void reg_img(View v) {
       iv.setImageResource(R.drawable.fish);
        Bitmap bitmap= BitmapFactory.decodeResource(getResources(), R.drawable.fish);
        img=bitmapToByteArray(bitmap);
    }
    public void click_add(View v)
    {
        mktest aa=new mktest();
        aa.execute();
    }
    public byte[] bitmapToByteArray( Bitmap bitmap ) {
        ByteArrayOutputStream stream = new ByteArrayOutputStream() ;
        bitmap.compress( Bitmap.CompressFormat.PNG, 100, stream) ;
        byte[] byteArray = stream.toByteArray() ;
        return byteArray ;
    }
    public void fake(View v)
    {
        Intent care= new Intent(getApplicationContext(),Regist.class);
        startActivity(care);
    }

    public class mktest extends AsyncTask<String,String,String> {

        @Override
        protected String doInBackground(String... params) {
            SoapObject request = new SoapObject("http://tempuri.org/", "UploadImg");     // 네임스페이스 메소드 이름

            request.addProperty("unit", unit);        //문제를 받아오기 위한 번호
            request.addProperty("concept",conncept[0]);        //단위지식
            request.addProperty("answer",answer);           //정답
            request.addProperty("explain",explain);         //설명
            request.addProperty("aa",Base64.encode(img));

            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/UploadImg", 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);
        }
    }


}

 

 

- 디버깅 구문 (exception 에서 나온것 )

a:DeserializationFailed' faultstring: '메시지를 역직렬화하는 동안 포맷터에서 예외가 발생했습니다. 'UploadImg' 작업에 대한 요청 메시지의 본문을 역직렬화하는 동안 오류가 발생했습니다. 네임스페이스 'http://tempuri.org/'의 끝 요소 'concept'이(가) 필요한데 텍스트 '30'을(를) 찾았습니다. 선 1, 위치 345.' faultactor: 'null' detail: null

 

일단 wcf서비스에다 이미지와 몇가지 정수형을던저주고 반응을 받아오는 문제인데 

정수형 배열 던저줄떄 반복문써서 던져줘야하는건 아는데 정수형 하나만 있을경우 하나만 넣어도 되잖아요? 

그래서 concept문제는 아닌것같습니다 

이미지는 문장이 길지만 8*8사이즈도 못넘기는 상황이라 곤란합니다 

정수형 데이터는 서버쪽으로 잘 넘어갔어요 

 

 

어떤게 문제인가요 이미지 파일쪽 구문에 이상이 있는건가요? 

익명사용자 님이 2016년 7월 19일 질문

답변 달기

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