public class MainActivity extends AppCompatActivity {
ImageView iv;
TextView tv;
byte[]aa;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
iv=(ImageView)findViewById(R.id.Image);
tv=(TextView)findViewById(R.id.Response);
}
public void callImage(View v)
{
iv.setImageResource(R.drawable.fish);
BitmapDrawable d = (BitmapDrawable)((ImageView) findViewById(R.id.Image)).getDrawable();
Bitmap b = d.getBitmap();
aa=bitmapToByteArray(b);
}
public void sendImage(View v)
{
mktest a=new mktest();
a.execute();
}
//개별의 태스크
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", 1); //문제를 받아오기 위한 번호
request.addProperty("concept",1); //단위지식
request.addProperty("answer",4); //정답
request.addProperty("explain","이것은 샘플입니다"); //설명
request.addProperty("aa", Base64.encode(aa));
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);
}
}
public byte[] bitmapToByteArray( Bitmap $bitmap ) {
ByteArrayOutputStream stream = new ByteArrayOutputStream() ;
$bitmap.compress( Bitmap.CompressFormat.JPEG, 100, stream) ;
byte[] byteArray = stream.toByteArray() ;
return byteArray ;
}
}---------------------------------------------------------------------------------------------------------------------07-20 01:21:39.829 15832-15871/com.example.a44.uploadtest2 W/EGL_emulation: eglSurfaceAttrib not implemented 07-20 01:21:39.829 15832-15871/com.example.a44.uploadtest2 W/OpenGLRenderer: Failed to set EGL_SWAP_BEHAVIOR on surface 0xac37e0c0, error=EGL_SUCCESS 07-20 01:21:42.115 15832-15906/com.example.a44.uploadtest2 W/System.err: SoapFault - faultcode: 'a:DeserializationFailed' faultstring: '메시지를 역직렬화하는 동안 포맷터에서 예외가 발생했습니다. 'UploadImg' 작업에 대한 요청 메시지의 본문을 역직렬화하는 동안 오류가 발생했습니다. 네임스페이스 'http://tempuri.org/'의 끝 요소 'concept'이(가) 필요한데 텍스트 '1'을(를) 찾았습니다. 선 1, 위치 344.' faultactor: 'null' detail: null 07-20 01:21:42.127 15832-15906/com.example.a44.uploadtest2 W/System.err: at org.ksoap2.serialization.SoapSerializationEnvelope.parseBody(SoapSerializationEnvelope.java:136) 07-20 01:21:42.127 15832-15906/com.example.a44.uploadtest2 W/System.err: at org.ksoap2.SoapEnvelope.parse(SoapEnvelope.java:140) 07-20 01:21:42.128 15832-15906/com.example.a44.uploadtest2 W/System.err: at org.ksoap2.transport.Transport.parseResponse(Transport.java:129) 07-20 01:21:42.128 15832-15906/com.example.a44.uploadtest2 W/System.err: at org.ksoap2.transport.HttpTransportSE.parseResponse(HttpTransportSE.java:301) 07-20 01:21:42.128 15832-15906/com.example.a44.uploadtest2 W/System.err: at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:274) 07-20 01:21:42.128 15832-15906/com.example.a44.uploadtest2 W/System.err: at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:118) 07-20 01:21:42.128 15832-15906/com.example.a44.uploadtest2 W/System.err: at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:113) 07-20 01:21:42.128 15832-15906/com.example.a44.uploadtest2 W/System.err: at com.example.a44.uploadtest2.MainActivity$mktest.doInBackground(MainActivity.java:65) 07-20 01:21:42.128 15832-15906/com.example.a44.uploadtest2 W/System.err: at com.example.a44.uploadtest2.MainActivity$mktest.doInBackground(MainActivity.java:47) 07-20 01:21:42.129 15832-15906/com.example.a44.uploadtest2 W/System.err: at android.os.AsyncTask$2.call(AsyncTask.java:295) 07-20 01:21:42.129 15832-15906/com.example.a44.uploadtest2 W/System.err: at java.util.concurrent.FutureTask.run(FutureTask.java:237) 07-20 01:21:42.129 15832-15906/com.example.a44.uploadtest2 W/System.err: at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234) 07-20 01:21:42.130 15832-15906/com.example.a44.uploadtest2 W/System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) 07-20 01:21:42.130 15832-15906/com.example.a44.uploadtest2 W/System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) 07-20 01:21:42.130 15832-15906/com.example.a44.uploadtest2 W/System.err: at java.lang.Thread.run(Thread.java:818)--------------------------------------------------------------------------------
ImageView iv;
TextView tv;
byte[]aa;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
iv=(ImageView)findViewById(R.id.Image);
tv=(TextView)findViewById(R.id.Response);
}
public void callImage(View v)
{
iv.setImageResource(R.drawable.fish);
BitmapDrawable d = (BitmapDrawable)((ImageView) findViewById(R.id.Image)).getDrawable();
Bitmap b = d.getBitmap();
aa=bitmapToByteArray(b);
}
public void sendImage(View v)
{
mktest a=new mktest();
a.execute();
}
//개별의 태스크
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", 1); //문제를 받아오기 위한 번호
request.addProperty("concept",1); //단위지식
request.addProperty("answer",4); //정답
request.addProperty("explain","이것은 샘플입니다"); //설명
request.addProperty("aa", Base64.encode(aa));
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);
}
}
public byte[] bitmapToByteArray( Bitmap $bitmap ) {
ByteArrayOutputStream stream = new ByteArrayOutputStream() ;
$bitmap.compress( Bitmap.CompressFormat.JPEG, 100, stream) ;
byte[] byteArray = stream.toByteArray() ;
return byteArray ;
}
}---------------------------------------------------------------------------------------------------------------------07-20 01:21:39.829 15832-15871/com.example.a44.uploadtest2 W/EGL_emulation: eglSurfaceAttrib not implemented 07-20 01:21:39.829 15832-15871/com.example.a44.uploadtest2 W/OpenGLRenderer: Failed to set EGL_SWAP_BEHAVIOR on surface 0xac37e0c0, error=EGL_SUCCESS 07-20 01:21:42.115 15832-15906/com.example.a44.uploadtest2 W/System.err: SoapFault - faultcode: 'a:DeserializationFailed' faultstring: '메시지를 역직렬화하는 동안 포맷터에서 예외가 발생했습니다. 'UploadImg' 작업에 대한 요청 메시지의 본문을 역직렬화하는 동안 오류가 발생했습니다. 네임스페이스 'http://tempuri.org/'의 끝 요소 'concept'이(가) 필요한데 텍스트 '1'을(를) 찾았습니다. 선 1, 위치 344.' faultactor: 'null' detail: null 07-20 01:21:42.127 15832-15906/com.example.a44.uploadtest2 W/System.err: at org.ksoap2.serialization.SoapSerializationEnvelope.parseBody(SoapSerializationEnvelope.java:136) 07-20 01:21:42.127 15832-15906/com.example.a44.uploadtest2 W/System.err: at org.ksoap2.SoapEnvelope.parse(SoapEnvelope.java:140) 07-20 01:21:42.128 15832-15906/com.example.a44.uploadtest2 W/System.err: at org.ksoap2.transport.Transport.parseResponse(Transport.java:129) 07-20 01:21:42.128 15832-15906/com.example.a44.uploadtest2 W/System.err: at org.ksoap2.transport.HttpTransportSE.parseResponse(HttpTransportSE.java:301) 07-20 01:21:42.128 15832-15906/com.example.a44.uploadtest2 W/System.err: at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:274) 07-20 01:21:42.128 15832-15906/com.example.a44.uploadtest2 W/System.err: at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:118) 07-20 01:21:42.128 15832-15906/com.example.a44.uploadtest2 W/System.err: at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:113) 07-20 01:21:42.128 15832-15906/com.example.a44.uploadtest2 W/System.err: at com.example.a44.uploadtest2.MainActivity$mktest.doInBackground(MainActivity.java:65) 07-20 01:21:42.128 15832-15906/com.example.a44.uploadtest2 W/System.err: at com.example.a44.uploadtest2.MainActivity$mktest.doInBackground(MainActivity.java:47) 07-20 01:21:42.129 15832-15906/com.example.a44.uploadtest2 W/System.err: at android.os.AsyncTask$2.call(AsyncTask.java:295) 07-20 01:21:42.129 15832-15906/com.example.a44.uploadtest2 W/System.err: at java.util.concurrent.FutureTask.run(FutureTask.java:237) 07-20 01:21:42.129 15832-15906/com.example.a44.uploadtest2 W/System.err: at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234) 07-20 01:21:42.130 15832-15906/com.example.a44.uploadtest2 W/System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) 07-20 01:21:42.130 15832-15906/com.example.a44.uploadtest2 W/System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) 07-20 01:21:42.130 15832-15906/com.example.a44.uploadtest2 W/System.err: at java.lang.Thread.run(Thread.java:818)--------------------------------------------------------------------------------
어재부터 이거가지고 씨름했는데 아직도 답이 안나왔네요....
디버깅해서 뭘보내는지 확인을 해봐도 envelope 자체는 문제가 없는것같아요...
보내는 envelope 는 길이가 아무리 길어도 문제가 없으니 어느쪽 문제인가요
서버측인가요 아님 클라이언트 측인가요
aa 프로퍼티 타입이 뭔데?
글고 내가 예전에 말한대로 soap 테스팅툴로 좀 쏴봐라. 왜 글케 안함?
ㄴ이미지 보내는거라 변형해서 보내야하는데 base64로 변형하면 string형으로 빠지니 받는쪽도 string으로 잡음
ㄴ 테스팅 툴로 확인하니 아무 문제 없음 고로 내쪽에서 뭔가 문제있는 코드란 뜻임