我想用post方式访问服务器,为什么总是不成功,求指点

wangzilee 发布于 2016/04/04 12:26
阅读 560
收藏 0

package com.jikexueyuan.httppost;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;

import com.jikexueyuan.httpget.R;

import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;

public class MainActivity extends Activity {

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  findViewById(R.id.button1).setOnClickListener(new View.OnClickListener() {
   
   @Override
   public void onClick(View arg0) {
    new AsyncTask<String, Void, Void>(){

     @Override
     protected Void doInBackground(String... params) {
      try {
       URL url = new URL(params[0]);
       HttpURLConnection connection = (HttpURLConnection) url.openConnection();
       
       connection.setDoInput(true);
       connection.setDoOutput(true);
       connection.setRequestMethod("POST");
       
       OutputStreamWriter osw = new OutputStreamWriter(connection.getOutputStream(),"utf-8");
       BufferedWriter bw = new BufferedWriter(osw);
       bw.write("type=data&doctype=json&version=1.1&caseId=1");
       bw.flush();
       
       InputStream is = connection.getInputStream();
       InputStreamReader isr = new InputStreamReader(is,"utf-8");
       BufferedReader br = new BufferedReader(isr);
       String line;
       while((line = br.readLine()) != null){
        System.out.println(line);
       }
       br.close();
       isr.close();
       is.close();
      } catch (MalformedURLException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
      } catch (IOException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
      }
      
      return null;
     }
     
    }.execute("http://111.9.116.146:8080/showcase/pic/queryLastPic");
   }
  });
 }

}


<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.jikexueyuan.httpget"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="14"
        android:targetSdkVersion="19" />
    <uses-permission android:name="android.permission.INTERNET"/>

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.jikexueyuan.httppost.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>


请求方法:HTTP POST
请求URL:http://ip:prot/showcase/pic/queryLastPic
功能:查询月签到信息

参数名称 数据类型 中文意思 是否必须 备注
caseId String 展示柜id 是 

请求示例:
{
"caseId":"1",
}

结果报文类型:JSON
结果报文中包含参数:平台返回值信息
成员名称 子成员名称 数据类型 中文意思 是否必须
code  String  返回代码 必须
msg  String 返回值 必须
dataList caseId String 展示柜Id 必须
 picUrl String 照片地址 必须
 thumbnailPicUrl String 照片缩略图地址 必须
 picName String 照片名称 必须
结果报文示例:
{
  "code": "1000",
  "data": {
    "caseId": "78485",
    "picName": "QQ截图20160317104047.png",
    "picUrl": "http://7xo6no.com2.z0.glb.qiniucdn.com ",
    "thumbnailPicUrl": "http://7xo6no.com2.z0.glb.qiniucdn.com"
  },
  "dataList": [],
  "message": "success",
  "success": ""
}


项目完整源码https://yunpan.cn/cqxXH5D64Jcuc  访问密码 6ad3

加载中
0
August1996_
August1996_
用okhttp框架吧,方法很简单的。自己封装的话老是忘了这里或是那里的close
August1996_
August1996_
okhttp是一个Java的库 封装好了网络通信的功能的了
w
wangzilee
谢谢前辈,可是您说的是不是只是个工具吧?而我现在是在开发app,需要访问云服务器,并需要用服务器的某些响应值,不知道您的工具是否能帮我实现这个目的
0
August1996_
August1996_
你这不是安卓么。。。
w
wangzilee
是的
0
hibegin
hibegin
干嘛不用现成的额。。 一直感觉HttpUrlConnect 很难用。特别 Post
w
wangzilee
怎么用现成的?前辈您用哪些现成的了?望指教谢谢
返回顶部
顶部