相关疑难解决方法(0)

如何使用java.net.URLConnection来触发和处理HTTP请求

java.net.URLConnection在这里经常询问使用情况,Oracle教程对此非常简洁.

该教程基本上只显示了如何触发GET请求并读取响应.它没有解释如何使用它来执行POST请求,设置请求标头,读取响应标头,处理cookie,提交HTML表单,上传文件等.

那么,我如何使用java.net.URLConnection触发和处理"高级"HTTP请求?

java http urlconnection httprequest httpurlconnection

1903
推荐指数
11
解决办法
100万
查看次数

Java - 通过POST方法轻松发送HTTP参数

我成功地使用此代码HTTP通过GET方法发送 带有一些参数的请求

void sendRequest(String request)
{
    // i.e.: request = "http://example.com/index.php?param1=a&param2=b&param3=c";
    URL url = new URL(request); 
    HttpURLConnection connection = (HttpURLConnection) url.openConnection();           
    connection.setDoOutput(true); 
    connection.setInstanceFollowRedirects(false); 
    connection.setRequestMethod("GET"); 
    connection.setRequestProperty("Content-Type", "text/plain"); 
    connection.setRequestProperty("charset", "utf-8");
    connection.connect();
}
Run Code Online (Sandbox Code Playgroud)

现在我可能需要通过POST方法发送参数(即param1,param2,param3),因为它们非常长.我想在该方法中添加一个额外的参数(即String httpMethod).

如何能够尽可能少地更改上面的代码,以便能够通过GET或发送参数POST

我希望改变

connection.setRequestMethod("GET");
Run Code Online (Sandbox Code Playgroud)

connection.setRequestMethod("POST");
Run Code Online (Sandbox Code Playgroud)

本来可以做到的,但参数仍然是通过GET方法发送的.

HttpURLConnection任何方法可以帮助吗?有没有有用的Java构造?

任何帮助将非常感谢.

java post http httpurlconnection

310
推荐指数
8
解决办法
78万
查看次数

在Android中发送POST数据

我对PHP,JavaScript和许多其他脚本语言很有经验,但我没有很多Java或Android的经验.

我正在寻找一种方法将POST数据发送到PHP脚本并显示结果.

php java android client-server httpconnection

275
推荐指数
11
解决办法
43万
查看次数

Java中的KeyValuePair

我正在寻找Java中的KeyValuePair类.
由于java.util大量使用接口,因此没有提供具体实现,只有Map.Entry接口.

我可以导入一些规范的实现吗?这是我讨厌实施100倍的"管道工编程"课程之一.

java key-value

229
推荐指数
7
解决办法
33万
查看次数

Http获取使用Android HttpURLConnection

我是Java和Android开发的新手,并尝试创建一个简单的应用程序,它应该联系Web服务器并使用http get将一些数据添加到数据库.

当我使用计算机中的Web浏览器进行呼叫时,它可以正常工作.但是,当我在Android模拟器中执行运行应用程序的调用时,不会添加任何数据.

我已将Internet权限添加到应用程序的清单中.Logcat不会报告任何问题.

任何人都可以帮我弄清楚什么是错的?

这是源代码:

package com.example.httptest;

import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;

public class HttpTestActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        TextView tv = new TextView(this);
        setContentView(tv);

        try {
            URL url = new URL("http://www.mysite.se/index.asp?data=99");
            HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
            urlConnection.disconnect();
            tv.setText("Hello!");
        }
        catch (MalformedURLException ex) {
            Log.e("httptest",Log.getStackTraceString(ex)); 
        }
        catch (IOException ex) {
            Log.e("httptest",Log.getStackTraceString(ex));
        }   
    }        
}
Run Code Online (Sandbox Code Playgroud)

java android-emulator android-internet

59
推荐指数
3
解决办法
17万
查看次数

NameValuePair不建议使用openConnection

我一直在关注如何从Android应用程序将数据插入数据库的在线教程,除了这个小部分之外,一切都正常

List<NameValuePair> params = new ArrayList<>();
params.add(new BasicNameValuePair("username", username));
params.add(new BasicNameValuePair("password", password));
Run Code Online (Sandbox Code Playgroud)

NameValuePair和BasicNameValuePair已被弃用,有利于openConnection().如何创建与之相关的新值关联?http://developer.android.com/reference/java/net/URL.html#openConnection()

有谁知道如何使用openConnection创建名称值对?我到处搜寻.

java android basicnamevaluepair

31
推荐指数
3
解决办法
5万
查看次数

弃用的HTTP类Android棒棒糖5.1

org.apache.http类和AndroidHttpClient类已经被弃用的Android 5.1.这些类不再被维护,您应该尽快使用这些API将任何应用程序代码迁移到URLConnection类.

https://developer.android.com/about/versions/android-5.1.html#http

它建议切换到URLConnection类.没有足够的文件记录如何从应用程序进行发布呼叫.

目前我正在使用这个

public void postData()
{
    // Create a new HttpClient and Post Header
    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost("http://www.yoursite.com/script.php");

    try
    {
        // Add your data
        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair(2);
        nameValuePairs.add(new BasicNameValuePair("id", "12345"));
        nameValuePairs.add(new BasicNameValuePair("stringdata", "AndDev is Cool!"));
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
        // Execute HTTP Post Request
        HttpResponse response = httpclient.execute(httppost);
     } 
     catch (ClientProtocolException e) 
     {
        // TODO Auto-generated catch block
     } 
     catch (IOException e) 
     {
        // TODO …
Run Code Online (Sandbox Code Playgroud)

android http-post

21
推荐指数
1
解决办法
2万
查看次数

将sdk更新为M时,无法解析导入org.apache.http.client错误

当我将项目导入eclipse时,我遇到了以下错误.我已将我的sdk更新为M.

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpVersion;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.CoreProtocolPNames;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;
import org.apache.http.protocol.HTTP;
Run Code Online (Sandbox Code Playgroud)

android androidhttpclient

16
推荐指数
3
解决办法
6万
查看次数

在Android中,为什么在API 22中不推荐使用所有org.apache.http.*类(我应该使用什么作为替换)?

ThreadSafeClientConnManager在我的应用程序中使用了一些其他类,如HttpStatus,SSLSocketFactory,PlainSocketFactory,SchemeRegistry等.但是从API 22开始,它们都被标记为已弃用,并且我没有看到任何明确指示替换的内容他们.文档jas说"请使用openConnection().请访问此网页以获取更多详细信息",这并不能说清楚该怎么做.openConnection()只是指向URL类,而网页链接是从2011年开始讨论Apache类和之间的差异HttpUtrlConnection.那么,这是否意味着HttpUrlConnection从现在开始我们应该是useign 类?如果是这种情况,我认为它不是线程安全的(这就是我使用它的原因ThreadSafeClientConnManager).

有人可以帮我澄清一下吗?

android http httpurlconnection

12
推荐指数
1
解决办法
4188
查看次数

如何从HttpClient切换到HttpUrlConnection?

我正在创建一个Android应用程序,我通过HttpClient将数据从Android应用程序发送到servlet.我使用HttpPost方法.

我在Android开发者网站上读到Apache HttpClient库在Android Froyo 2.2中有一些错误,毕竟使用HttpUrlConnection而不是HttpPost是一个好习惯.所以我想将我的HttpPost代码转换为HttpUrlConnectio,但不知道如何.

我在这里发布我的Android代码以及servlet代码

Android代码

private String postData(String valueIWantToSend[]) 
    {
        // Create a new HttpClient and Post Header
        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost(url);
        try 
        {
            List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
            nameValuePairs.add(new BasicNameValuePair("param1",valueIWantToSend[0]));
            nameValuePairs.add(new BasicNameValuePair("param2", valueIWantToSend[1]));
            nameValuePairs.add(new BasicNameValuePair("param3", valueIWantToSend[2]));
            nameValuePairs.add(new BasicNameValuePair("param4", valueIWantToSend[3]));
            nameValuePairs.add(new BasicNameValuePair("param5", valueIWantToSend[4]));
            nameValuePairs.add(new BasicNameValuePair("param6", valueIWantToSend[5]));
            nameValuePairs.add(new BasicNameValuePair("param7", valueIWantToSend[6]));
            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
            /* execute */
            HttpResponse response = httpclient.execute(httppost);
            HttpEntity rp = response.getEntity();

            //origresponseText=readContent(response);
        }
        catch (ClientProtocolException e) 
        {
            // TODO Auto-generated catch …
Run Code Online (Sandbox Code Playgroud)

java android servlets httpurlconnection apache-httpclient-4.x

4
推荐指数
2
解决办法
1万
查看次数

ANDROID java.net.URLConnection 一次发送图像和数据

我使用 java.net.URLConnection 使用 POST 方法将图像和一些参数发送到服务器。我下面的代码可以很好地将图像发送到服务器,但我有点困惑附加一些参数并一次发送到服务器。我已经关注了这里这里,但我认为我的代码采用了不同的方法。

这是我的代码片段如下:

import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

import android.app.Activity;
import android.app.ProgressDialog;
import android.util.Log;
import android.widget.Toast;

import com.yai.app.support.DialogHandler;

public class ThreadImageUploader {
    private int serverResponseCode = 0;
    private ProgressDialog dialog;
    private Activity activity;

    public ThreadImageUploader(ProgressDialog mProgressDialog, Activity mActivity){
        dialog = mProgressDialog;
        activity = mActivity;
    }

    public int uploadFile(final String sourceFileUri, final String upLoadServerUri) {
        String fileName = sourceFileUri;

        HttpURLConnection conn = null;
        DataOutputStream dos = null; …
Run Code Online (Sandbox Code Playgroud)

java android urlconnection

3
推荐指数
1
解决办法
5433
查看次数

Http方法在android studio中不推荐使用警告

我试图用参数做一些http请求.目前我正在使用

 private List<NameValuePair> mParams = new ArrayList<NameValuePair>();
 private DefaultHttpClient mHttpClient;
 private HttpPost mHttpPost;
Run Code Online (Sandbox Code Playgroud)

这些用于发出http请求,它工作正常.但问题是android studio显示所有这些3的弃用警告.我尝试使用, HttpClientBuilder.create().build();但android工作室无法导入库HttpClientBuilder 我尝试下载并添加 此jar依赖 但仍然无法正常工作.这是我的代码

        mHttpClient = new DefaultHttpClient();
        mHttpPost = new HttpPost(url);
        mParams.add(new BasicNameValuePair("key", value));
        mHttpPost.setEntity(new UrlEncodedFormEntity(mParams));
Run Code Online (Sandbox Code Playgroud)

所有这些行都显示了已弃用的警告,这是另一种方法吗?

android deprecated androidhttpclient android-studio

2
推荐指数
1
解决办法
3575
查看次数

无法将JSONObject从android发布到PHP

我试图使用以下代码将JSONObject从Android应用程序发布到php Web应用程序.

String url = "http://10.0.2.2/test/"
URL rest_url = new URL(url);
JSONObject params = new JSONObject();
params.put("username","admin"); 

// Send POST data request
BufferedReader reader=null;

DataOutputStream printout;
URLConnection conn = rest_url.openConnection();
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setUseCaches(false);
conn.setRequestProperty("Content-Type", "application/json");
conn.setRequestProperty("Accept", "application/json");
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
wr.write( params.toString());
wr.close();
Run Code Online (Sandbox Code Playgroud)

当我尝试在php中检索用户名时,我得到空值.

 <?php echo $_POST['username'];
 ?>
Run Code Online (Sandbox Code Playgroud)

php android

1
推荐指数
1
解决办法
99
查看次数