Androidは、データを取得するためにWebに接続するためのHTTPリクエストを送信します

1.新しいAndroidプロジェクトを作成します(ここではAndroidStudioを使用していますが、学習段階でEclipseを使用しています。コードは同じです)。
2. AndroidManifest.xml構成に2つのアクセス許可を追加するだけで十分です。インターネット上の多くの人が多くのアクセス許可を構成しており、将来的には役に立たなくなります。httpリクエストを送信する場合は、これら2つを構成するだけで済みます。
ここに画像の説明を挿入
3. UIインターフェース(activity_main.xml)

<TextView
        android:id="@+id/tv_json"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text=""
        />

4.javaクラス(MainActivity.java)

package tgc.rj.qmkh;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
import java.io.DataOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import tgc.rj.qmkh.utils.FilesUtils;

public class MainActivity extends AppCompatActivity {
    private String urlWww="";//这里写你的请求web端的地址,比如http://192.168.1.2:8080/tsgl/android/bookAll
    private String response = "";
    private TextView tv_json;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv_json = findViewById(R.id.tv_json);
        String par = "str="+"1323123";
        sendHttp(urlWww, par);//第一个是请求地址。第二个参数传的值。第二个参数如果没有参数,可以不带参数,直接给""
    }

    private void sendHttp(final String urlStr, final String paramStr){
        new Thread(new Runnable() {
            @Override
            public void run() {
                HttpURLConnection conn = null;
                try {
                    URL url = new URL(urlStr);
                    conn = (HttpURLConnection) url.openConnection();
                    conn.setRequestProperty("Charset", "UTF-8");
                    conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
                    conn.setRequestMethod("POST");
                    conn.setConnectTimeout(8000);
                    conn.setReadTimeout(8000);
                    String param = paramStr;
                    OutputStream outputStream = conn.getOutputStream();
                    DataOutputStream out = new DataOutputStream(outputStream);
                    out.writeBytes(param);
                    out.flush();
                    out.close();
                    InputStream inputStream = conn.getInputStream();
                    //FilesUtils输入流输出流类(response是响应过来的数据)
                    response = FilesUtils.readInfo(inputStream);
                    runOnUiThread(new Runnable() {
                        public void run() {
                       		 //用runOnUiThread接收输出显示结果
                            tv_json.setText(response);
                        }
                    });
                    if (conn != null) {
                        conn.disconnect();
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }).start();
    }
}

5.FilesUtils.java(入力ストリーム出力ストリームクラス)

public class FilesUtils {
    public static void saveInfo(OutputStream outputStream, String wenjian){
        try {
            outputStream.write(wenjian.getBytes());
            outputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static String readInfo(InputStream input) {
        ByteArrayOutputStream os = new ByteArrayOutputStream();
        byte[] buffer = new byte[1024];
        int len;
        try {
            while ((len = input.read(buffer))!=-1) {
                os.write(buffer, 0, len);
            }
            byte[] data = os.toByteArray();
            os.close();
            input.close();
            String str = new String(data);
            return str;
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
}

6. Web側
mainActivity.javaでstr = 1323123の値を渡したことに注意してください以下では、Web側での受信方法について説明します。
それは実際には簡単です。

@Autowired
private BookService bookService;

@RequestMapping("/bookAll")
@ResponseBody
public Object bookAll(String str) {
	System.out.println("Android端传过来的值:"+str);
	List<Books> list = bookService.findAll();
	return list;
}

効果画像:
ここに画像の説明を挿入7. Webコードで、既に見たように、リストをAndroid側に返しました。Android側のMainActivity.java runOnUiThreadスレッドでも応答を受信しました。この応答は、Web側で受信した値です。インターフェースに表示されるtv_json.setText(応答)も使用されます。表示された効果をご覧ください。
ここに画像の説明を挿入
リストの場合は実際にはjsonデータなので処理する必要があり、通常の文字列の場合は直接使用できます。

ご支援ありがとうございます。業界プラスvを一緒に学ぶ:zzaizhangzeng

元の記事23件を公開 いいね11 訪問30,000+

おすすめ

転載: blog.csdn.net/weixin_42279584/article/details/93733567