Google App Engine에서 URLFetch 클래스를 사용하여 PHP 웹 페이지 (일부 다른 웹 사이트)에 연결했습니다.Google App Engine의 HTTP Post는 시간의 절반 만 작동합니다.
이 내가
try{
byte[] data = ("[email protected]&TITLE=evolution&COMMENT=comments&PRICE=5000").getBytes("UTF-8");
URL url = new URL("http://www.box.com/nost.php");
HTTPRequest request = new HTTPRequest(url, HTTPMethod.POST);
request.setPayload(data);
HTTPResponse response = URLFetchServiceFactory.getURLFetchService().fetch(request);
}
지금이 내가 로컬로 배포 할 때 완벽하게 잘 작동하는 것 같다있을 것입니다. 그러나 Google 앱 엔진에 게시하면 시간의 절반 만 작동합니다. (정확히 동일한 데이터로도 게시판을 두 번 이상 누르면 오류 또는 성공 일 수 있음)
전 데이터를 변경하지 않으므로 이는 완전히 무작위 적으로 보입니다. 누군가 이런 일이 일어나는 이유에 대해 조언 해 줄 수 있습니까?
EDIT :이 코드는 입니다. 제 PHP가 gae가 만들고있는 HTTP 요청을 차단하고있는 것처럼 보입니다. 나는 catch 블록 내부의 재귀를 사용하여 성공할 때까지 계속 시도하도록 수정했다.
try {
URL url = new URL("http://www.mywebsite.com/myfile.php");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
connection.setRequestMethod("POST");
OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream());
writer.write("EMAIL="+URLEncoder.encode("[email protected]", "UTF-8")+
"&TITLE="+URLEncoder.encode("myTitle", "UTF-8")+
"&PRICE="+URLEncoder.encode(String.valueOf(10000), "UTF-8"));
writer.close();
if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {
// OK
return true;
} else {
// Server returned HTTP error code.
//keep retrying until you succeed!! fighting!!
return newPost(postComponent);
}
} catch (MalformedURLException e) {
e.printStackTrace();
return false;
} catch (IOException e) {
e.printStackTrace();
return false;
}
catch (Exception e){
e.printStackTrace();
//ah dam probably server is down so you went stack overflow I give up
return false;
}
"작동하지 않음"을 정의하십시오. "오류"를 정의하십시오. 나는 반 십 이명의 답을 줄 수 있었지만 지금 당장 나는 이상한 추측을 할 수 없다. HTTP 오류 코드 또는 예외를 의미하는지 여부도 알 수 없습니다. –