2017-12-12 6 views
-1

기본 인증이 필요한 URL로 POST 요청을 보내려고합니다. 여기저기서 해결책을 찾았지만 내 서블릿은 여전히 ​​결과를 얻지 못합니다. 내 코드, 내가 진정한 투쟁을하고 있기 때문에 내가이 문제를 해결하도록 도울 수 있기를 바랍니다.서블릿 기본 인증을 사용하는 POST 요청

 //Basic Auth + envoi réponse 
     //backUrl=http://....../ws 
     String webPage = backUrl ; 
     String name = "CLT_NAGT"; 
     String password = "[email protected]"; 

     String authString = name + ":" + password; 
     System.out.println("auth string: " + authString); 
     byte[] authEncBytes = Base64.encodeBase64(authString.getBytes()); 
     String authStringEnc = new String(authEncBytes); 
     System.out.println("Base64 encoded auth string: " + authStringEnc); 

     //Connexion 

     URL url = new URL(webPage); 
     HttpURLConnection urlConnection = (HttpURLConnection)url.openConnection(); 
     urlConnection.setRequestMethod("POST"); 
     urlConnection.setDoOutput(true); 
     urlConnection.setRequestProperty("Authorization", "Basic " + authStringEnc); 
     urlConnection.setRequestProperty("Content-Type", "application/json"); 
     urlConnection.connect(); 

     //Envoi du JSON 

     OutputStreamWriter outputWriter = new OutputStreamWriter(urlConnection.getOutputStream()); 
     outputWriter.write(Json);//Json is a json.toString() object 
     outputWriter.flush(); 
     outputWriter.close(); 

내 브라우저에는 빈 페이지가 있고 이클립스는 예외 또는 오류를 발생시키지 않습니다. 내가 어떻게 고칠 수 있니?

+0

당신이 응답을 읽고있는? – Kayaman

+0

답장을 보내 주셔서 감사합니다. 입력 스트림 리더에 대해 이야기하고 있습니까? – Onizuka

+0

브라우저에서 응답을 얻지 못하면 클라이언트 측 코드에서 무엇을 기대합니까? 당신은 내가 그냥 내 서블릿이다 지정된 URL – Ravi

답변

0

이 내 서블릿 (서버 측)

public class ServletAO extends HttpServlet { 

    /** 
    * 
    */ 
    private static final long serialVersionUID = 1L; 

    @Override 
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) 
    throws ServletException, IOException { 

    resp.setContentType("application/json"); 

    //récupération du resultat de l'exécution de l'AO 
    PA865AccessObject ao = (PA865AccessObject) req.getAttribute("ao"); 
    String aoResp = ao.getMessage(); 
    String rep=""; 
    DateFormat df = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss"); 
    Date today = Calendar.getInstance().getTime(); 
    String reportDate = df.format(today); 
    //récupération des paramètres de la requete 
     //  String nomPrenom = req.getParameter("nomPrenom"); 
    String adrLigne1 = req.getParameter("adresse1"); 
    String adrLigne2 = req.getParameter("adresse2"); 
    String adrLigne3 = req.getParameter("adresse3"); 
    String adrLigne4 = req.getParameter("adrLigne4"); 
    String adrLigne5 = req.getParameter("adrLigne5"); 
    String codePostal = req.getParameter("codepostal"); 
    String ville = req.getParameter("ville"); 
    String pays = req.getParameter("pays"); 
    String numContrat = req.getParameter("numContrat"); 
    String numAbonne = req.getParameter("numAbonne"); 
    String idRequest = req.getParameter("idRequest"); 
    String backUrl = req.getParameter("backurl"); 


    if(aoResp.indexOf("MISE A JOUR EFFECTUEE")>-1) 
    { 
     rep="2-Taken"; 
    } 
    else 
    { 
     rep="4-Dropped"; 
    } 

    //Fichier JSON 


    JSONObject technical= new JSONObject(); 
    try { 
     technical.put("topic", "fr-sicl-Address_Contact_Change_Request-v1"); 
     technical.put("organization", "fr"); 
     technical.put("sa","SICLIENT"); 
     technical.put("nature", "business"); 
     technical.put("sk", "0"); 
     technical.put("version", "1"); 
     technical.put("source_event_id", "ID"); 
     technical.put("event_id", "IDCalcule"); 
     technical.put("event_date_time", reportDate); 
     technical.put("emission_date_time", reportDate); 
    } catch (JSONException e1) { 
     // TODO Auto-generated catch block 
     e1.printStackTrace(); 
    } 


    System.out.println(technical.toString()); 



    JSONObject payload= new JSONObject(); 
    try { 
     payload.put("distrib_customer_ids", numAbonne); 
     payload.put("party_customer_id", "A verifier"); 
     payload.put("contract_id",numContrat); 
     payload.put("correlation_id", idRequest); 
     payload.put("request_id", idRequest); 
     payload.put("request_issued_date_time", reportDate); 
     payload.put("request_event_type", rep); 
     payload.put("request_event_reason", "PA865"); 
     payload.put("source_system", "CIARD"); 
     payload.put("party_row_id", "A verifier"); 
     payload.put("replaced_address_date_time", reportDate); 
    } catch (JSONException e1) { 
     // TODO Auto-generated catch block 
     e1.printStackTrace(); 
    } 


    System.out.println(payload.toString()); 




    JSONObject newAdress = new JSONObject(); 

    try { 
     newAdress.put("recipient_line1", adrLigne1); 
     newAdress.put("line2", adrLigne2); 
     newAdress.put("line3",adrLigne3); 
     newAdress.put("street_line4", adrLigne4); 
     newAdress.put("line5", adrLigne5); 
     newAdress.put("zip_locality_line6", ""); 
     newAdress.put("country_label_line7", ""); 
     newAdress.put("zip_postal_code", codePostal); 
     newAdress.put("locality", ville); 
     newAdress.put("country", pays); 
    } catch (JSONException e1) { 
     // TODO Auto-generated catch block 
     e1.printStackTrace(); 
    } 

    System.out.println(newAdress.toString()); 

    String Json = 
    technical.toString()+payload.toString()+newAdress.toString(); 


    //Basic Auth + envoi réponse 

     String webPage = backUrl ; 
     String name = "CLT_NAGT"; 
     String password = "[email protected]"; 

     String authString = name + ":" + password; 
     System.out.println("auth string: " + authString); 
     byte[] authEncBytes = Base64.encodeBase64(authString.getBytes()); 
     String authStringEnc = new String(authEncBytes); 
     System.out.println("Base64 encoded auth string: " + authStringEnc); 

     //Connexion 

     URL url = new URL(webPage); 
     HttpURLConnection urlConnection = 
     (HttpURLConnection)url.openConnection(); 
     urlConnection.setRequestMethod("POST"); 
     urlConnection.setDoOutput(true); 
     urlConnection.setRequestProperty("Authorization", "Basic " + 
     authStringEnc); 
     urlConnection.setRequestProperty("Content-Type", 
     "application/json"); 
     urlConnection.connect(); 

     //Envoi du JSON 

     OutputStreamWriter outputWriter = new 
     OutputStreamWriter(urlConnection.getOutputStream()); 
     outputWriter.write(""); 
     outputWriter.flush(); 
     outputWriter.close(); 

     //resp.flushBuffer(); 

    } 



    } 
+0

이 부분은 부분 게시물이 아닌 답변에 속합니다. 또한 서블릿 코드는 볼 수 없습니다. 서블릿에서 응답이 있는지 여부를 알려줘야합니다. 이 부분을 디버깅하고, 서버 로그를 확인하고, 게시자와 같은 기존 클라이언트를 시도하고, 서버 측 구현을 검증해야합니다. – Ravi

관련 문제