标签: httpclient

使用HTTPS的HttpGet:SSLPeerUnverifiedException

使用HttpClient时,尝试通过HTTPS进行通信时收到以下错误:

线程"main"中的异常javax.net.ssl.SSLPeerUnverifiedException:peer未经过身份验证.

这是我的代码:

URI loginUri = new URI("https://myUrl.asp");

HttpClient httpclient = new DefaultHttpClient();
HttpGet httpget = new HttpGet( loginUri );
HttpResponse response = httpclient.execute( httpget );
Run Code Online (Sandbox Code Playgroud)

如何抑制或删除此错误?

java ssl https httpclient

37
推荐指数
3
解决办法
11万
查看次数

Android HttpClient持久性cookie

更新:不应再向阅读此内容的任何人推荐此问题及其答案.Android不再推荐使用HttpClient(读取:弃用),而是推荐使用HttpUrlConnection.现在使用的库的一个很好的例子是RetrofitOkHttp.在此问题的上下文中,可以使用后续查询保存,存储和传递cookie.这不是透明处理的.使用OkHttp,您可以使用拦截器.

我有一个具有多个意图的Android应用程序.

第一个意图是登录表单,后续意图依赖于登录过程提供的cookie.

我遇到的问题是,cookie似乎并没有贯穿整个意图.我在每个意图中创建新的HttpClients(我最初尝试将Parcelable传输到每个意图,但效果不是很好).

有没有人有任何提示让饼干坚持意图?

java cookies android httpclient

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

Ruby - net/http - 重定向

我有一个URL,我正在使用HTTP GET将查询传递到页面.最新的味道(in net/http)会发生什么,该脚本不会超出302响应.我尝试了几种不同的解决方案; HTTPClient,net/http,Rest-Client,Patron ......

我需要一种方法来继续到最后一页,以验证页面html上的属性标记.重定向是由于移动用户代理点击重定向到移动视图的页面,因此标题中的移动用户代理.这是我今天的代码:

require 'uri'
require 'net/http'

class Check_Get_Page

    def more_http
        url = URI.parse('my_url')
        req, data = Net::HTTP::Get.new(url.path, {
        'User-Agent' => 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_2 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8H7 Safari/6533.18.5'
        })
        res = Net::HTTP.start(url.host, url.port) {|http|
        http.request(req)
            }
        cookie = res.response['set-cookie']
        puts 'Body = ' + res.body
        puts 'Message = ' + res.message
        puts 'Code = ' + res.code
        puts "Cookie \n" + cookie
    end

end …
Run Code Online (Sandbox Code Playgroud)

ruby curl httpclient http-headers net-http

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

System.Net.Http与Microsoft.Net.Http的当前状态

我对包装感到困惑HttpClient.之前它被分发为Microsoft.Http.NetNuGet包的一部分,而System.Net.Http被认为是遗留的.现在看起来恰恰相反:System.Net.Http所有平台Microsoft.Net.Http都有一个全新的软件包,并且暂时没有更新,据微软开发团队的人员称,将被弃用.

那么问题:

  • 我们可以Microsoft.Net.Http用(最新的)替换NuGet包的依赖项System.Net.Http吗?
  • 遗留的.NET 4.0平台是否仍然使用Microsoft.Net.Http?那么非Windows平台(iOS,Android)呢?新的System.Net.Http支持他们,但我记得Microsoft.Net.Http我只好另外安装Microsoft.Bcl.Build,并Microsoft.Bcl以获得跨平台的东西的工作.System.Net.Http不依赖于他们.可以跳过Bcl包吗?
  • System.Net.Http缺少一些Http扩展方法,SupportsPreAuthenticate并试图调用这些方法导致运行时错误(缺少方法).我们该如何应对?

c# httpclient base-class-library nuget

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

如何从HttpResponseMessage获取特定的标头值

我正在进行HTTP呼叫.我的响应X-BB-SESSIONHttpResponseMessage对象的标题部分中包含会话代码.如何获取特定标头值?

我正在使用foreach语句迭代所有标头(MSDN链接).但是编译器一直说不能这样做:

foreach statement cannot operate on variables of type
  System.net.http.headers.cachecontrolheadervalue because
  'System.net.http.headers.cachecontrolheadervalue' doesn't contain
  a public definition for 'GetEnumerator'
Run Code Online (Sandbox Code Playgroud)

这是我正在尝试的代码:

//Connection code to BaasBox

HttpResponseMessage response = await client.SendAsync(requestMessage, HttpCompletionOption.ResponseHeadersRead);
if (response.IsSuccessStatusCode)
{
    //get the headers
    HttpResponseHeaders responseHeadersCollection = response.Headers;
    foreach (var value in responseHeadersCollection.CacheControl)  --> HERE
    {
        string sTemp = String.Format("CacheControl {0}={1}", value.Name, value.Value);
    } else
{
    Console.WriteLine("X-BB-SESSION: NOT Found");
}
Run Code Online (Sandbox Code Playgroud)

从我试图获取值(X-BB-SESSION值)的标题内容是这样的:

Access-Control-Allow-Origin: *    
Access-Control-Allow-Headers: X-Requested-With    
X-BB-SESSION: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Run Code Online (Sandbox Code Playgroud)

c# httpresponse httpclient windows-phone-8 baasbox

34
推荐指数
4
解决办法
5万
查看次数

在Android中使用带有post参数的HttpClient和HttpPost

我正在编写一个Android应用程序的代码,该应用程序应该获取数据,将其打包为Json并将其发布到Web服务器,而后者应该使用json进行响应.

使用GET请求工作正常,但由于某些原因使用POST,所有数据似乎都被剥离,服务器没有收到任何内容.

这是代码的片段:

HttpParams params = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(params, 5000);
HttpConnectionParams.setSoTimeout(params, 5000);        
DefaultHttpClient httpClient = new DefaultHttpClient(params);
BasicCookieStore cookieStore = new BasicCookieStore();
httpClient.setCookieStore(cookieStore);

String uri = JSON_ADDRESS;
String result = "";
String username = "user";
String apikey = "something";
String contentType = "application/json";

JSONObject jsonObj = new JSONObject();

try {
    jsonObj.put("username", username);
    jsonObj.put("apikey", apikey);
} catch (JSONException e) {
    Log.e(TAG, "JSONException: " + e);
}

HttpPost httpPost = new HttpPost(uri);
List<NameValuePair> postParams = new ArrayList<NameValuePair>();
postParams.add(new BasicNameValuePair("json", jsonObj.toString()));
HttpGet httpGet …
Run Code Online (Sandbox Code Playgroud)

java android json httpclient http-post

33
推荐指数
2
解决办法
12万
查看次数

使用HttpClient,如何防止自动重定向并获取原始状态代码并在301的情况下转发Url

我有以下方法返回Http status code给定的Url:

public static async void makeRequest(int row, string url)
{
    string result;
    Stopwatch sw = new Stopwatch(); sw.Start();

    try
    {
        using (HttpClient client = new HttpClient())
        {
            HttpResponseMessage response = new HttpResponseMessage();
            response = await client.GetAsync(url);

            // dump contents of header
            Console.WriteLine(response.Headers.ToString());

            if (response.IsSuccessStatusCode)
            {
                result = ((int)response.StatusCode).ToString();
            }
            else
            {
                result = ((int)response.StatusCode).ToString();
            }
        }
    }
    catch (HttpRequestException hre)
    {
        result = "Server unreachable";
    }

    sw.Stop();
    long time = sw.ElapsedTicks / (Stopwatch.Frequency / …
Run Code Online (Sandbox Code Playgroud)

c# redirect http httpclient

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

如何将查询参数添加到GetMethod(使用Java commons-httpclient)?

使用Apache的commons-httpclient for Java,将查询参数添加到GetMethod实例的最佳方法是什么?如果我使用PostMethod,它非常简单:

PostMethod method = new PostMethod();
method.addParameter("key", "value");
Run Code Online (Sandbox Code Playgroud)

但是,GetMethod没有"addParameter"方法.我发现这有效:

GetMethod method = new GetMethod("http://www.example.com/page");
method.setQueryString(new NameValuePair[] {
    new NameValuePair("key", "value")
});
Run Code Online (Sandbox Code Playgroud)

但是,我见过的大多数示例都是将参数直接硬编码到URL中,例如:

GetMethod method = new GetMethod("http://www.example.com/page?key=value");
Run Code Online (Sandbox Code Playgroud)

或者对查询字符串进行硬编码,例如:

GetMethod method = new GetMethod("http://www.example.com/page");
method.setQueryString("?key=value");
Run Code Online (Sandbox Code Playgroud)

这些模式中的一种是首选吗?为什么PostMethod和GetMethod之间的API差异?那些用于其他HttpMethodParams方法的是什么?

java httpclient getmethod

32
推荐指数
3
解决办法
7万
查看次数

根据请求修改请求标头C#HttpClient PCL

我目前正在使用System.Net.Http.HttpClient进行跨平台支持.

我读到,为每个请求实例化HttpClient对象并不是一个好习惯,并且应尽可能重用它.

现在我在为服务编写客户端库时遇到问题.某些API调用需要具有特定标头,有些必须不包含此特定标头.

似乎我只能操纵将随每个请求发送的"DefaultRequestHeaders".

实际发出请求时是否有一个选项,例如"client.PostAsync()"来修改仅针对特定请求的标头?

(信息:请求可以是多线程的).

提前致谢!

.net c# httpclient request-headers portable-class-library

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

使用HttpClient时如何在HttpContent中设置大字符串?

所以,我创建了一个HttpClient并使用发布数据HttpClient.PostAsync().

我设置了HttpContent使用

HttpContent content = new FormUrlEncodedContent(post_parameters); 其中post_parameters是键值对列表List<KeyValuePair<string, string>>

问题是,当HttpContent有一个很大的值(一个图像转换为base64要传输)我得到一个URL太长的错误.这是有道理的 - 因为网址不能超过32,000个字符.但是如何将数据添加到HttpContentif中呢?

请帮忙.

.net c# httpclient asp.net-web-api httpcontent

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