Android 앱에서 WebServices를 사용하여 Java 응용 프로그램으로 이미지를 보내려고합니다. 서버 측에 Android에서 HttpPut이 작동하지 않습니다.
나는이 코드를 가지고 있고 그것은 클라이언트로 우편 배달부를 사용하여 잘 작동 : 나는 서버에 이미지를 업로드하려고 내 안드로이드 응용 프로그램이있는 반면에@Path("/report")
public class ReportService {
@PUT
@Path("/put")
@Consumes(MediaType.APPLICATION_JSON)
public Report saveReport(String json){
return ReportDAO.saveReport(json);
}
:
try {
//Encode the image
String imagenPath = params[1];
ByteArrayOutputStream baos = new ByteArrayOutputStream();
Bitmap myBitmap = BitmapFactory.decodeFile(imagenPath);
myBitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);
byte[] imageBytes = baos.toByteArray();
String encodedImage = Base64.encodeToString(imageBytes, Base64.DEFAULT);
//Create client,set url and entity
HttpClient httpClient = new DefaultHttpClient();
StringEntity entity = new StringEntity(encodedImage);
HttpPut httpPut = new HttpPut("http://10.0.2.2:8080/xxx/rest/report/put");
httpPut.setEntity(entity);
HttpResponse response = httpClient.execute(httpPut);
HttpEntity resp = response.getEntity();
}catch(Exception e){
e.printStackTrace();
}
}
Android Studio의 가상 장치를 사용 중이며 GET 메소드로 제대로 작동하지만 POST/PUT으로 실패합니다.
아무런 예외가 없으며 메서드가 서버에 도달하지도 않습니다. EntityUtils를 사용하여 응답의 내용을 확인하면 빈 문자열이 표시됩니다.
우편함의 URL을 복사하고 "http://10.0.2.2:8080"을 (를) "http://localhost:8080"(으)로 바꾸는 것은 서버에 있지만 내 Android 응용 프로그램에는 도달하지 못했습니다.
도움 주셔서 감사합니다.
동일한 컴퓨터에서 서버와 가상 장치를 실행하고 있습니다. 실제 장치를 사용하기 전에이 통신을 테스트하고 있습니다. 왜 내가 http://10.0.2.2:8080/xxx/rest/user/get/{name}을 소비 할 수 있는지는 모르겠지만 PUT/POST 방법은 아닙니다. 네트워크에 문제가 있으면 메소드를 가져 오지 않아야합니까? Ty – Marcks1
답장을 보내려면 포트에서 인바운드 및 아웃 바운드 트래픽을 확인해야합니다 (존재하지 않는 경우). 방화벽 규칙을 추가하십시오. 또한 우편 배달부를 통해 확인하십시오. –