对于HttpClient不支持PostAsJsonAsync方法C#感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍不支持http协议,并为您提供关于Android中的AsyncHttpClie
对于HttpClient不支持PostAsJsonAsync方法C#感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍不支持http协议,并为您提供关于Android 中的 AsyncHttpClient 框架下怎么更新后台 json 数据?、android----AsyncHttpClient的get,post和图片上传、android-async-http AsyncHttpClient介绍、Android中的asynchttpclient框架post成功后无法执行list.add方法的有用信息。
本文目录一览:- HttpClient不支持PostAsJsonAsync方法C#(不支持http协议)
- Android 中的 AsyncHttpClient 框架下怎么更新后台 json 数据?
- android----AsyncHttpClient的get,post和图片上传
- android-async-http AsyncHttpClient介绍
- Android中的asynchttpclient框架post成功后无法执行list.add方法
HttpClient不支持PostAsJsonAsync方法C#(不支持http协议)
我正在尝试从Web应用程序调用Web API。我正在使用.Net
4.5,并且在编写代码时遇到的错误HttpClient
不包含定义PostAsJsonAsync
方法。
下面是代码:
HttpClient client = new HttpClient();client.BaseAddress = new Uri("http://localhost:51093/");client.DefaultRequestHeaders.Accept.Add( new MediaTypeWithQualityHeaderValue("application/json"));var user = new Users();user.AgentCode = 100;user.Remarks = "Test";user.CollectionDate = System.DateTime.Today;user.RemittanceDate = System.DateTime.Today;user.TotalAmount = 1000;user.OrgBranchID = 101;var response = client.PostAsJsonAsync("api/AgentCollection", user).Result;
我收到错误消息:
错误:“ System.Net.Http.HttpClient”不包含“ PostAsJsonAsync”的定义,并且找不到扩展方法“
PostAsJsonAsync”接受类型为“ System.Net.Http.HttpClient”的第一个参数(您是否缺少使用指令还是程序集引用?)
请看看并给我建议。
答案1
小编典典是的,您需要添加一个参考
System.Net.Http.Formatting.dll
可以在扩展程序集区域中找到。
实现此目的的一种好方法是将NuGet包Microsoft.AspNet.WebApi.Client
添加到您的项目中。
Android 中的 AsyncHttpClient 框架下怎么更新后台 json 数据?
RequestParams params=new RequestParams();
params.put("sessionID", AppUtil.getUserVo().getSessionID());
params.put("info", getResources().getString(R.string.hremployee));
public void baseInfo(Context context,RequestParams params, final HttpUtil.ReponseCallback<EmpVo> callback){ HttpUtil.get(context,spellUrl(baseInfo_url), params, new TextHttpResponseHandler() { @Override public void onFailure(int i, Header[] headers, String s, Throwable throwable) { callback.onFailure(s,throwable); } @Override public void onSuccess(int i, Header[] headers, String s) { EmpVo empVo = parseJsonToEmpVo(s); callback.onSuccess(empVo); } }); }
大家请看上面一段,先构造了 params,然后根据公司后台给的 handler/EmpInfo.ashx 接口,通过返回的数据传入 asynschttp 框架的 success 方法去处理了 empVo
private EmpVo parseJsonToEmpVo(String result){ EmpVo empVo=null; try { JSONObject obj=new JSONObject(result); int ret=obj.getInt("result"); if(ret==0){ //LogUtil.d(TAG,obj.getString("HREmployee").toString()); empVo=gson.fromJson(obj.getString("HREmployee"),type_empVo); } } catch (JSONException e) { e.printStackTrace(); } return empVo; }然后这样就得到了 empVo 了。
现在问题来了!!!我需要 update 员工表 (emp),代码应该怎么写?用 asynschttp 的 post 方法吗?那参数怎么传进去?
请看下图
这张是在后台那边拍过来的,因为第一次写公司的代码,不知道怎么下手。上面的 postempinfo 就是接口了,然后有个 req.inForm 的方法,下面是返回的一堆 emp 的数据...
android----AsyncHttpClient的get,post和图片上传
async-http-client库是一个基于回调函数的Http异步通信客户端Android组件,是在Apache的HttpClient库的基础上开发构建而成的。
Eclipse使用:导入android-async-http-1.4.4.jar 包, 点击下载
AndroidStudio: gradle中引入 compile ''com.loopj.android:android-async-http:1.4.8''
功能特色
- 利用版4.3.6上游HttpClient代替Android提供defaulthttpclient
- 兼容AndroidAPI 23高
- 做异步HTTP请求处理的响应匿名回调
- HTTP请求发生UI线程之外
- 请求使用线程池限制并发资源使用情况
- get /后参数生成器( RequestParams )
- 多文件上传没有额外的第三方库
- JSON上传流没有额外的图书馆
- 处理循环和相对重定向
- 小的开销给你的应用程序只90kb一切
- 自动智能请求重试次数质量不一的移动连接优化
- 自动gzip响应解码速度超快的请求支持
- 二进制协议通信
binaryhttpresponsehandler
- 内置的响应分析JSON与
jsonhttpresponsehandler
- 节能反应直接进入文件
fileasynchttpresponsehandler
- 大的持久性Cookie,保存cookie到你的应用程序的SharedPreferences
- 杰克逊JSON集成,gson或其他JSON序列化库(德)
basejsonhttpresponsehandler
- 与SAX解析器支持
saxasynchttpresponsehandler
- 语言和内容编码的支持,不仅仅是UTF-8
效果图:
public class MainActivity extends Activity implements OnClickListener {
public static AsyncHttpClient mHttpc = new AsyncHttpClient();
private TextView mTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_asynchttpclict);
initView();
}
private void initView() {
findViewById(R.id.btn1).setOnClickListener(this);
findViewById(R.id.btn2).setOnClickListener(this);
findViewById(R.id.btn3).setOnClickListener(this);
findViewById(R.id.btn4).setOnClickListener(this);
mTextView=(TextView) findViewById(R.id.Text);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn1:
showHttpGet1();
break;
case R.id.btn2:
showHttpGet2("https://www.baidu.com");
break;
case R.id.btn3:
showHttpGet3();
break;
case R.id.btn4:
showHttpPost();
break;
case R.id.btn5:
case R.id.btn6:
default:
break;
}
}
private void showHttpGet1() {
AsyncHttpClient client = new AsyncHttpClient();
client.get("https://www.baidu.com", new AsyncHttpResponseHandler() {
@Override
public void onStart() { // 请求启动 请求前
}
@Override
public void onSuccess(int statusCode, Header[] headers,
byte[] responseBody) { // 请求成功
StringBuffer result = new StringBuffer("");
int length = responseBody.length;
for (int i = 0; i < length; i++) {
result.append((char) (responseBody[i] & 0xff));
}
Toast.makeText(MainActivity.this, "结果:" + result.toString(), 2)
.show();
mTextView.setText("结果:" +result.toString());
}
@Override
public void onFailure(int statusCode, Header[] headers,
byte[] responseBody, Throwable error) // 请求失败
{
}
public void onRetry() { // 重试
}
@Override
public void onProgress(int bytesWritten, int totalSize) { // 请求进度
}
@Override
public void onFinish() { // 请求完成
}
});
}
public void showHttpGet2(String uri) {
mHttpc.get(uri, null, new AsyncHttpResponseHandler() { // 请求失败
@Override
public void onFailure(int arg0, Header[] arg1, byte[] arg2,
Throwable arg3) {
}
@Override
public void onSuccess(int arg0, Header[] arg1,
byte[] responseBody) {
StringBuffer result = new StringBuffer("");
int length = responseBody.length;
for (int i = 0; i < length; i++) {
result.append((char) (responseBody[i] & 0xff));
}
Toast.makeText(MainActivity.this,
"结果:" + result.toString(), 2).show();
mTextView.setText("结果:" +result.toString());
}
});
}
private void showHttpGet3() {
AsyncHttpClient client = new AsyncHttpClient();
RequestParams params = new RequestParams();
params.put("q", "test");
params.put("showapi_appid", "11548");
// 当前时间
params.put("showapi_timestamp", "20160511151954");
params.put("showapi_sign", "bb1d15ab7ce646ec87cc89d684ca4bcb");
client.get("https://route.showapi.com/32-9", params,
new TextHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers,
String response) {
Toast.makeText(MainActivity.this,
"结果:" + response.toString(), 2).show();
mTextView.setText("结果:" +response.toString());
}
@Override
public void onFailure(int statusCode, Header[] headers,
String responseBody, Throwable error) {
Log.i("ERROR", error.toString());
}
});
}
/*
* 获得字符串
*/
public void showHttpPost() {
AsyncHttpClient client = new AsyncHttpClient();
RequestParams params = new RequestParams();
params.put("q", "test");
params.put("showapi_appid", "11548");
// 当前时间
params.put("showapi_timestamp", "20160511151954");
params.put("showapi_sign", "bb1d15ab7ce646ec87cc89d684ca4bcb");
client.post("https://route.showapi.com/32-9", params,
new AsyncHttpResponseHandler() {
@Override
public void onFailure(int arg0, Header[] arg1,
byte[] responseBody, Throwable arg3) {
}
@Override
public void onSuccess(int arg0, Header[] arg1,
byte[] responseBody) {
StringBuffer result = new StringBuffer("");
int length = responseBody.length;
for (int i = 0; i < length; i++) {
result.append((char) (responseBody[i] & 0xff));
}
Toast.makeText(MainActivity.this,
"结果:" + result.toString(), 2).show();
mTextView.setText("结果:" +result.toString());
}
});
}
/**
* 上传单个文件
*/
private void showFile() {
File myFile = new File("filePath");// filePath--->文件路径
RequestParams params = new RequestParams();
try {
params.put("time", "20160511151954");
params.put("sign", "bb1d15ab7ce646ec87cc89d684ca4bcb");
params.put("filename", myFile);
AsyncHttpClient client = new AsyncHttpClient();
client.post("url", params, new AsyncHttpResponseHandler() {
@Override
public void onFailure(int arg0, Header[] arg1, byte[] arg2,
Throwable arg3) {
}
@Override
public void onSuccess(int arg0, Header[] arg1, byte[] arg2) {
}
});
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
/***
* 多个文件上传
*
* @param sendFilesPath
*/
public void uploadFile(ArrayList<String> sendFilesPath) {
if (sendFilesPath.size() == 0)
return;
String strUploadFile = "";
AsyncHttpClient client = new AsyncHttpClient();
client.setURLEncodingEnabled(false);
RequestParams params = new RequestParams();
params.put("time", "20160511151954");
params.put("sign", "bb1d15ab7ce646ec87cc89d684ca4bcb");
// 批量上传
for (int i = 0; i < sendFilesPath.size(); i++) {
File myFile = new File(sendFilesPath.get(i));
try {
params.put(myFile.getName(), myFile);
} catch (FileNotFoundException e1) {
continue;
}
}
client.setTimeout(10000);
client.post(strUploadFile, params, new AsyncHttpResponseHandler() {
@Override
public void onFailure(int statusCode, Header[] headers,
byte[] responseBody, Throwable arg3) {
Log.i("Show", "上传失败");
}
@Override
public void onSuccess(int statusCode, Header[] headers,
byte[] responseBody) {
Log.i("Show", "上传成功");
}
@Override
public void onProgress(int bytesWritten, int totalSize) {
super.onProgress(bytesWritten, totalSize);
int count = (int) ((bytesWritten * 1.0 / totalSize) * 100);
// 上传进度显示
Log.i("Show", "上传进度显示:" + count);
}
@Override
public void onRetry(int retryNo) {
super.onRetry(retryNo);
// 返回重试次数
}
});
}
}
记得加网络权限
<uses-permission android:name="android.permission.INTERNET"/>
源码点击下载:https://github.com/DickyQie/android-network-request
android-async-http AsyncHttpClient介绍
前一阵子刚搬了家,加上公司要发新版本,所以一直比较忙,文章也好几周没更新了。难得这个周末有空,正好周内偶然间闲逛Android中的asynchttpclient框架post成功后无法执行list.add方法
成功执行post方法后成功后,返回了json,通过解析json得到了一个数组,我希望在success回调中执行list.add方法,报错了。请问 如何取出success中的数据,或者在success中new一个对象??
ps:logcat没有报错,空白的一片无法显示。
因为在ONsuccess的方法中给菜单添加对象(List.add**),可是到了方法块外就无法识别(List.get**)
我们今天的关于HttpClient不支持PostAsJsonAsync方法C#和不支持http协议的分享已经告一段落,感谢您的关注,如果您想了解更多关于Android 中的 AsyncHttpClient 框架下怎么更新后台 json 数据?、android----AsyncHttpClient的get,post和图片上传、android-async-http AsyncHttpClient介绍、Android中的asynchttpclient框架post成功后无法执行list.add方法的相关信息,请在本站查询。
本文标签: