1. HttpClient和WebService的区别和介绍
HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。
Web service是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的互操作的应用程序。
Web Service技术, 能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件, 就可相互交换数据或集成。依据Web Service规范实施的应用之间, 无论它们所使用的语言、 平台或内部协议是什么, 都可以相互交换数据。Web Service是自描述、 自包含的可用网络模块, 可以执行具体的业务功能。Web Service也很容易部署, 因为它们基于一些常规的产业标准以及已有的一些技术,诸如标准通用标记语言下的子集XML、HTTP。Web Service减少了应用接口的花费。Web Service为整个企业甚至多个组织之间的业务流程的集成提供了一个通用机制。
2. 怎么把httpclient定义为web请求
private void getMobileCodeInfo(){
try {
final String SERVER_URL = "http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx/getMobileCodeInfo"; // 定义需要获取的内容来源地址
HttpPost request = new HttpPost(SERVER_URL);
List<BasicNameValuePair> params = new ArrayList();
params.add(new BasicNameValuePair("mobileCode", "136370628")); //(注意这里的号码必须大于6位)
params.add(new BasicNameValuePair("userId", ""));
request.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));
HttpResponse httpResponse = new DefaultHttpClient().execute(request);
if (httpResponse.getStatusLine().getStatusCode() != 404)
{
String result = EntityUtils.toString(httpResponse.getEntity());
System.out.println(result);
}
} catch (Exception e) {
Log.e("eee", ""+e);
e.printStackTrace();
}
}
3. web前端怎么调用api接口
1、首先需要确定第三方的接口的基本信息:地址、请求方式,参数、返回值,接口模式这里第三方的接口是restful风格的,采用get请求。
4. 如何实现HttpClient + Web Api架构下数据的压缩
HttpClient + Web Api实现Restful服务
下面实现了提交一个对象json数据到服务器上请求创建操作,对应Http的POST请求。
1) 准备需要传递给WebAPI的参数
2) 然后用System.Net.Http.StringContent把它打个包
3) 然后设置一下ContentType
4) 通过Http Post调用WebAPI得到返回结果
5) 最后将Json格式返回的结果反序列化为强类型
5. C#用httpclient模拟post到web网站上
实例化下面的类,设置相关属性(url,method)等,调用call就好
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Security.Cryptography.X509Certificates;
using System.Net.Security;
using System.IO;
using System.Net;
using System.Xml;
namespace xxxu
{
public class XXXUHttpClient
{
//请求内容,无论post和get,都用get方式提供
private string reqContent;
//应答内容
private string resContent;
//请求方法
private string method;
//错误信息
private string errInfo;
//证书文件
private string certFile;
//证书密码
private string certPasswd;
//ca证书文件
private string caFile;
//超时时间,以秒为单位
private int timeOut;
//http应答编码
private int responseCode;
//字符编码
private string charset;
public HuizeHttpClient()
{
this.caFile = "";
this.certFile = "";
this.certPasswd = "";
this.reqContent = "";
this.resContent = "";
this.method = "POST";
this.errInfo = "";
this.timeOut = 1 * 60;//5分钟
this.responseCode = 0;
setCharset(System.Web.HttpContext.Current.Request.ContentEncoding.BodyName);
}
//设置请求内容
public void setReqContent(string reqContent)
{
this.reqContent = reqContent;
}
//获取结果内容
public string getResContent()
{
return this.resContent;
}
//设置请求方法post或者get
public void setMethod(string method)
{
this.method = method;
}
//获取错误信息
public string getErrInfo()
{
return this.errInfo;
}
//设置证书信息
public void setCertInfo(string certFile, string certPasswd)
{
this.certFile = certFile;
this.certPasswd = certPasswd;
}
//设置ca
public void setCaInfo(string caFile)
{
this.caFile = caFile;
}
//设置超时时间,以秒为单位
public void setTimeOut(int timeOut)
{
this.timeOut = timeOut;
}
//获取http状态码
public int getResponseCode()
{
return this.responseCode;
}
public void setCharset(string charset)
{
if (string.IsNullOrEmpty(charset))
{
this.charset = "UTF-8";
}
this.charset = charset;
}
//验证服务器证书
public bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
{
return true;
}
//执行http调用
public bool call()
{
StreamReader sr = null;
HttpWebResponse wr = null;
HttpWebRequest hp = null;
try
{
string postData = null;
if (this.method.ToUpper() == "POST")
{
string[] sArray = System.Text.RegularExpressions.Regex.Split(this.reqContent, "\\?");
hp = (HttpWebRequest)WebRequest.Create(sArray[0]);
if (sArray.Length >= 2)
{
postData = sArray[1];
}
}
else
{
hp = (HttpWebRequest)WebRequest.Create(this.reqContent);
}
ServicePointManager. = new System.Net.Security.(CheckValidationResult);
if (this.certFile != "")
{
hp.ClientCertificates.Add(new X509Certificate2(this.certFile, this.certPasswd));
}
hp.Timeout = this.timeOut * 1000;
System.Text.Encoding encoding = System.Text.Encoding.GetEncoding(this.charset);
if (postData != null)
{
byte[] data = encoding.GetBytes(postData);
hp.Method = "POST";
hp.ContentType = "application/x-www-form-urlencoded";
hp.ContentLength = data.Length;
Stream ws = hp.GetRequestStream();
// 发送数据
ws.Write(data, 0, data.Length);
ws.Close();
}
wr = (HttpWebResponse)hp.GetResponse();
sr = new StreamReader(wr.GetResponseStream(), encoding);
this.resContent = sr.ReadToEnd();
sr.Close();
wr.Close();
}
catch (Exception exp)
{
this.errInfo += exp.Message;
if (wr != null)
{
this.responseCode = Convert.ToInt32(wr.StatusCode);
}
return false;
}
this.responseCode = Convert.ToInt32(wr.StatusCode);
return true;
}
}
}
6. web服务器 接收文件 java
通过 request.getInputStream() 得到一个输入流 把输入流中的数据 存到本地文件中
7. web集群服务器通过Httpclient.executeMethod方式去请求其他网站的数据,数据没有返回到发送请求的机器
不知道,关注一下,希望搞清楚分享一下
8. HttpClient访问WebSerivice服务 认证和post数据 不能同时进行么
你好,很高兴为你解答,
两种都是提交方式,Post虽说可以这么写,但是,也会有【HttpPost】注解的方式,
所以, 不能。
~如果你认可我的回答,请及时点击【采纳为满意回答】按钮
~~手机提问的朋友在客户端右上角评价点【满意】即可。
~你的采纳是我前进的动力
~~O(∩_∩)O,记得好评和采纳,互相帮助,谢谢。
9. 如何使用HttpClient
一般的情况下我们都是使用IE或者Navigator浏览器来访问一个WEB服务器,用来浏览页面查看信息或者提交一些数据等等。所访问的这些页面有的仅仅是一些普通的页面,有的需要用户登录后方可使用,或者需要认证以及是一些通过加密方式传输,例如HTTPS。
目前我们使用的浏览器处理这些情况都不会构成问题。不过你可能在某些时候需要通过程序来访问这样的一些页面,比如从别人的网页中“偷”一些数据;利用某些站点提供的页面来完成某种功能,例如说我们想知道某个手机号码的归属地而我们自己又没有这样的数据,因此只好借助其他公司已有的网站来完成这个功能,这个时候我们需要向网页提交手机号码并从返回的页面中解析出我们想要的数据来。如果对方仅仅是一个很简单的页面,那我们的程序会很简单,本文也就没有必要大张旗鼓的在这里浪费口舌。
但是考虑到一些服务授权的问题,很多公司提供的页面往往并不是可以通过一个简单的URL就可以访问的,而必须经过注册然后登录后方可使用提供服务的页面,这个时候就涉及到COOKIE问题的处理。我们知道目前流行的动态网页技术例如ASP、JSP无不是通过COOKIE来处理会话信息的。为了使我们的程序能使用别人所提供的服务页面,就要求程序首先登录后再访问服务页面,这过程就需要自行处理cookie,想想当你用java.net.HttpURLConnection来完成这些功能时是多么恐怖的事情啊!况且这仅仅是我们所说的顽固的WEB服务器中的一个很常见的“顽固”!
再有如通过HTTP来上传文件呢?不需要头疼,这些问题有了“它”就很容易解决了!