2010-04-06 3 views
3

저는 Wordpress에 게시 된 블로그에 의견을 게시 할 수있는 모듈을 만들고 있습니다. 블로그 항목의 맨 아래에 표시된 Post-Comment-Form에 대한 HTML 소스를 보았습니다 (응답 섹션에서 나가기). 참고로 그 사용, 나는 DefaultHTTPClientBasicNameValuePairs를 사용하여 Java로 번역 내 코드는 다음과 같습니다 나는 HTTP 302 Found을 얻을안드로이드에서 wordpress-blog에 의견을 게시하십시오.

DefaultHttpClient httpclient = new DefaultHttpClient(); 
HttpPost httppost = new HttpPost("http://xycabz.wordpress.com/wp-comments-post.php"); 
httppost.setHeader("Content-type","application/x-www-form-urlencoded;charset=UTF-8"); 

List<NameValuePair> nvps = new ArrayList<NameValuePair>(); 

nvps.add(new BasicNameValuePair("author","abc")); 
nvps.add(new BasicNameValuePair("email","[email protected]")); 
nvps.add(new BasicNameValuePair("url",""));   
nvps.add(new BasicNameValuePair("comment","entiendamonos?")); 
nvps.add(new BasicNameValuePair("comment_post_ID","123")); 
//this was a hidden field and always set to 0 
nvps.add(new BasicNameValuePair("comment_parent","0")); 

try { 
    httppost.setEntity(new UrlEncodedFormEntity(nvps)); 
} catch (UnsupportedEncodingException e1) { 
    e1.printStackTrace(); 
} 

BasicResponseHandler handler = new BasicResponseHandler(); 


try { 

    Log.e("OUTPUT",httpclient.execute(httppost,handler)); 
} catch (ClientProtocolException e) {    
    e.printStackTrace(); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 

나는 무시하고이 코드 로그에서 예외 (임시 위치로 리디렉션). (참고 : 일반적으로 (웹 페이지에서) 댓글을 올리면 모든 댓글을 올리는 블로그 페이지로 돌아갑니다. 리디렉션에 들어간 URL은 동일합니다.이 리디렉션을 무시한 후에도 이 코드를 사용하여 내 개인 블로그에 의견을 게시하지만 실제 (제작) 블로그에는 게시하지 마십시오.

질문 :
1.이 게시물-A-주석 설정 문제 (원래 블로그 소유자가 설정 한 수 아마도 뭔가) 될 수 있을까?
2. HTTPClient가 302 상태 코드를 처리하는 방법은 무엇입니까? 결국, 사용자에게 성공과 실패를 알리고 실제로 그를 코멘트 페이지로 데려 가지 말아야합니다.

+0

주석을 게시하려고 할 때 프로덕션 로그에서 일어나는 일을 게시하는 것이 유용 할 것입니다. 전혀 오류가 있습니까? 댓글을 올바르게 게시하는 것처럼 보이지만 댓글이 표시되지 않습니다. – synic

+0

로그에 HttpResponseException : Found (HTTP 302 상태 코드)가 표시됩니다. IMO는 정상이지만 주석은 프로덕션 로그에 표시되지 않습니다. – Samuh

답변

1

당신은 gravatar, akismet 또는 u와 관련된 문제를 생성하는 다른 의견 관련 플러그인을 확인할 수 있습니다. 프로덕션 웹 사이트 디버깅을 위해 Firefox에서 Poster 및 LiveHTTP 헤더 확장을 사용하여 출력을 확인하십시오.

+0

블로그에는 Akismet 플러그인이 활성화되어있어 내 모든 댓글을 스팸으로 필터링했습니다. 이 필터링을 피할 수 있습니까? 블로그 소유자가 플러그인을 비활성화하는 것 외에 다른 도움을 줄 수 있습니까? – Samuh

+0

누구나이 문제가 생기면 내 코드를 테스트하기 위해 "존재하지 않는"전자 메일 ID를 사용하고있었습니다. 유효한 이메일 ID를 입력하면 댓글이 필터링되지 않았습니다. – Samuh

1

wp-comments-post.php가 있다고 가정하면 프로덕션 사이트에서 wp-comments-post.php에 대한 직접 액세스를 차단해야합니다 HTTP_REFERER 및/또는 HTTP_USER_AGENT를 확인합니다. 프로덕션 사이트의 .htaccess를 확인하십시오.

관련 문제