0

我试图在我的 android 应用程序中执行以下请求。我发送的请求是在 Chrome 浏览器上。在请求中,我缩短了表单数据,因此没有太多代码。

Request URL:http://***/
Request Method:POST
Status Code:200 OK

Request Headers
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding:gzip,deflate,sdch
Accept-Language:de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4
Cache-Control:max-age=0
Connection:keep-alive
Content-Length:424
Content-Type:application/x-www-form-urlencoded
Cookie:__utma=188893489.1646114392.1358703936.1367178892.1368783485.29; __utmz=188893489.1365594840.21.3.utmcsr=***|utmccn=(referral)|utmcmd=referral|utmcct=/
Host:***
Origin:***
Referer:**
User-Agent:Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36

Form Data
date=1375480155&mail=&dfBoot=Test

Response Headers
Connection:Keep-Alive
Content-Encoding:gzip
Content-Length:3614
Content-Type:text/html
Date:Fri, 02 Aug 2013 21:49:59 GMT
Keep-Alive:timeout=15, max=100
Server:Apache/2.2.14 (Ubuntu)
Vary:Accept-Encoding
X-Powered-By:PHP/5.3.2-1ubuntu4.20

使用此代码:

StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
                .permitAll().build();
        StrictMode.setThreadPolicy(policy);

        URL url = new URL("http://***/index.php");
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        try {
            connection.setRequestMethod("POST");
            connection.setDoInput(true);
            connection.setDoOutput(true);
            connection.setUseCaches(false);
            connection.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
            connection.setRequestProperty("Content-Length",String.valueOf(post.length()));
            //connection.setChunkedStreamingMode(0);//results in frezing
            OutputStreamWriter writer = new OutputStreamWriter(
                    connection.getOutputStream());
            writer.write(post);
            writer.flush();
            InputStream in = new BufferedInputStream(
                    connection.getInputStream());
            while (in.available() != 0) {
                in.read();
            }
            writer.close();
            in.close();
        } finally {
            connection.disconnect();
        }

代码非常混乱,因为我多次尝试解决我的连接问题。请帮助提供更好的解决方案。

4

1 回答 1

0

嗯,我会用 JSON 展示我的工作代码,但也许你可以修改它。

URL url = new URL("http://xcxcxcxcxcx");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setRequestProperty("Content-Type", "application/json");
            connection.setRequestProperty("charset", "utf-8");
            connection.setRequestProperty("Content-Length", "" + Integer.toString(jsonObject.toString().getBytes().length));
            connection.setRequestMethod("POST");
            connection.setDoOutput(true);
            connection.connect();
            DataOutputStream out = new DataOutputStream(connection.getOutputStream());
            out.writeBytes(jsonObject.toString());
            out.flush();
            out.close();
            InputStream is = connection.getInputStream();
            InputStreamReader reader = new InputStreamReader(is);
            BufferedReader r = new BufferedReader(reader);
              StringBuilder total = new StringBuilder();
              String line;
              while ((line = r.readLine()) != null) {
                  total.append(line);
              }

              JSONObject jsonObjectResult = null;
              if(typeOfMethod == 0){
               JSONTokener tokenizer = new JSONTokener(total.toString());
               jsonObjectResult = new JSONObject(tokenizer);
              }
            connection.disconnect();
            return jsonObjectResult;

从 InputStream 获取结果之间存在一些差异。

于 2013-08-02T22:28:18.507 回答