0

httpClient (apache による) を使用してデータを投稿および取得しようとしています。投稿はまったく問題なく、そのための私のコードには問題はありませんが、データの取得については同じことは言えません。

私がデータを取得しようとしている Web サイトは次のとおりです: http://www.posttestserver.com/data/2013/04/16/01.13.04594755373

投稿の本文 (つまり、最近のケースで始まる一番下の JSON 文字列) だけを受け取りたいのですが、現在使用しているメソッド (およびオンラインで見つけたすべてのメソッド) は、時刻、ソース IP、ヘッダー、および本文を返します。 (基本的にはすべてを返します)。これの本体を解析する方法はありますか?返された文字列を調べて、「Begin Post Body」というテキストを探すように指示したくはありません。これを行うための自然な方法が必要です。それは存在しますか?

TLDR: 投稿本文の内容のみを返したい

これが私のコードです:

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;

public static void main(String[] args) throws ClientProtocolException, IOException{

    HttpClient httpclient = new DefaultHttpClient();
    HttpGet httpget = new HttpGet("http://www.posttestserver.com/data/2013/04/16/01.41.38521171013");
    HttpResponse response = httpclient.execute(httpget);
    HttpEntity entity = response.getEntity();
    System.out.println(EntityUtils.toString(entity));

}

そして、返されるものは次のとおりです。

Time: Tue, 16 Apr 13 01:41:38 -0700
Source ip: 155.198.108.247

Headers (Some may be inserted by server)
UNIQUE_ID = UW0OwtBx6hIAACfjfl4AAAAA
CONTENT_LENGTH = 7627
CONTENT_TYPE = application/json
HTTP_HOST = posttestserver.com
HTTP_CONNECTION = close
HTTP_USER_AGENT = Apache-HttpClient/4.2.4 (java 1.5)
REMOTE_ADDR = 155.198.108.247
REMOTE_PORT = 54779
GATEWAY_INTERFACE = CGI/1.1
REQUEST_METHOD = POST
QUERY_STRING = 
REQUEST_URI = /post.php
REQUEST_TIME = 1366101698

No Post Params.

== Begin post body ==
{"Recent Cases":[{"descript..etc etc"}]}
== End post body ==

何か案は?

4

1 に答える 1

0

次のメソッドに URL を送信すると、ヘッダーの詳細なしで文字列で応答が返されるため、例では json.

private static String readUrl(final String urlString) throws Exception {
        BufferedReader reader = null;
        try {
            final URL url = new URL(urlString);
            reader = new BufferedReader(new InputStreamReader(url.openStream()));
            final StringBuffer buffer = new StringBuffer();
            int read;
            final char[] chars = new char[1024];
            while ((read = reader.read(chars)) != -1) {
                buffer.append(chars, 0, read);
            }
            return buffer.toString();
        } finally {
            if (reader != null) {
                reader.close();
            }
        }
    }
于 2013-04-16T12:59:37.860 に答える