2015-02-09 2 views
0

Я пытаюсь отправить электронное письмо с помощью API запросов SES HTTPS. У меня есть java-метод, который отправляет запрос GET на конечную точку SAS Amazon, я пытаюсь отправить электронное письмо с SES и зафиксировать результат.Код ответа HTTP 400 отправка GET Запрос на HTTPS Query API

Код:

public static String SendElasticEmail(String timeConv,String action,String source, String destinationAddr, String subject, String body) { 
    try { 
     System.out.println("date : "+timeConv); 

     System.out.println("In Sending Mail Method......!!!!!"); 

     //Construct the data 
     String data = "Action=" + URLEncoder.encode(action, "UTF-8"); 
     data += "&Source=" + URLEncoder.encode(source, "UTF-8"); 
     data += "&Destination.ToAddresses.member.1=" + URLEncoder.encode(destinationAddr, "UTF-8"); 
     data += "&Message.Subject.Data=" + URLEncoder.encode(subject, "UTF-8"); 
     data += "&Message.Body.Text.Data=" + URLEncoder.encode(body, "UTF-8"); 

     //Send data 
     System.out.println("https://email.us-east-1.amazonaws.com?"+data); 
     URL url = new URL("https://email.us-east-1.amazonaws.com?"+data); 
     //URLConnection conn = url.openConnection(); 

     HttpsURLConnection con = (HttpsURLConnection) url.openConnection(); 

     con.setRequestMethod("GET"); 

     con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 
     con.setRequestProperty("x-amz-date" , timeConv); 
     con.setRequestProperty("Content-Length", ""+data.toString().length()); 

     con.setRequestProperty("X-Amzn-Authorization" , authHeader); 

     int responseCode = ((HttpsURLConnection) con).getResponseCode(); 
     String responseMessage = ((HttpsURLConnection) con).getResponseMessage(); 

     System.out.println("\nSending 'GET' request to URL : " + url); 
     System.out.println("Response Code : " + responseCode); 
     //System.out.println("Response Message : " + responseMessage); 

     InputStream stream = con.getInputStream(); 
     InputStreamReader isReader = new InputStreamReader(stream); 

     System.out.println("hgfhfhfhgfgfghfgh"); 
     BufferedReader br = new BufferedReader(isReader); 
     String result = ""; 
     String line; 
     while ((line = br.readLine()) != null) { 
      result+= line; 
     } 
     System.out.println(result); 
     br.close(); 
     con.disconnect(); 
    } 

    catch(Exception e) { 
     e.printStackTrace(); 
    } 
    return subject; 
} 

Я вычислил подпись правильно, потому что на удар от почтальона клиента получает ответ 200.

+0

Использовать AWS SDK для Java было бы проще. – timrau

ответ

0
URL url = new URL("https://email.us-east-1.amazonaws.com?"+data); 

Вы пропустили '/' перед знаком вопроса. Он должен быть

URL url = new URL("https://email.us-east-1.amazonaws.com/?"+data); 
+0

supperrb ответ ....... u сэкономил жизнь ....... –