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사이즈도 못넘기는 상황이라 곤란합니다
정수형 데이터는 서버쪽으로 잘 넘어갔어요
어떤게 문제인가요 이미지 파일쪽 구문에 이상이 있는건가요?