我正在使用android-async-http而且非常喜欢它.我遇到了POST数据的问题.我必须以下列格式将数据发布到API: -
<request>
<notes>Test api support</notes>
<hours>3</hours>
<project_id type="integer">3</project_id>
<task_id type="integer">14</task_id>
<spent_at type="date">Tue, 17 Oct 2006</spent_at>
</request>
Run Code Online (Sandbox Code Playgroud)
根据文档,我尝试使用它RequestParams,但它失败了.这是其他任何方式吗?我也可以发布等效的JSON.有任何想法吗?
我正在研究这两个Android Http Networking库.
我想有些人使用这两个库的经验.就个人而言,我总是非常高兴地使用http://loopj.com/android-async-http/库.但最近我建议使用Volley Framework.
我可以从一个到另一个获得什么好处?
从我的阅读到目前为止,Volley在一个库中集成了许多不错的功能,如图像加载,请求缓存,请求取消.
我目前的使用案例/规格:
从我的Android应用程序中获取Web服务.
从SE上的一些阅读:
"Volley一切都很好,但从负面来看,它是一个没有文档记录,不受支持的,"将代码扔到墙上并对其进行I | O演示"库".
所以我认为它清晰的Volley可能会得到功能,但是记录和维护的程度如何呢?如果我决定使用它,4年后仍然会有它的支持吗?
我正在使用LoopJ AndroidAsyncHttp库来与我的PhP服务器通信.我遇到了问题.
我需要像这样发送一个JsonObject:
{ "data": 2376845,
"data2": 12545,
"array": [{"data3": "2013-01-10",
"data4": 23532 },
{"data3": "2013-01-11",
"data4": 523526 }]
}
Run Code Online (Sandbox Code Playgroud)
但是在javadoc中; 唯一的参数是RequestParams,并且没有任何类型的数组.谁能帮我?或者告诉我一些我可以使用的东西.谢谢.
我想使用LoopJ的AsndroidAsyncHttpt将JSON作为POST发送到我的localhost服务器.我正在使用这种方法:
public void post(Context context, String url, HttpEntity entity, String contentType, AsyncHttpResponseHandler responseHandler)
在我的代码中,但它不起作用.这是我的代码:
private void loginUser() throws JSONException, UnsupportedEncodingException {
String login = textLogin.getText().toString();
String password = textPassword.getText().toString();
JSONObject jsonObject = new JSONObject();
if(Utility.isNotNull(login) && Utility.isNotNull(password)) {
jsonObject.put("username", login);
jsonObject.put("password", password);
invokeWS(jsonObject);
}
else{
Toast.makeText(getApplicationContext(), "Prosz? wype?ni? wszystkie pola!", Toast.LENGTH_LONG).show();
}
}
private void invokeWS(JSONObject jsonObject) throws UnsupportedEncodingException {
StringEntity entity = new StringEntity(jsonObject.toString());
AsyncHttpClient client = new AsyncHttpClient();
Log.i("SER", "http://" + Constants.address + ":" + Constants.port + "/silownia_java/rest/login/auth" …Run Code Online (Sandbox Code Playgroud) 我知道我可以从AsyncHttpClient上传单个文件
http://loopj.com/android-async-http/
File myFile = new File("/path/to/file.png");
RequestParams params = new RequestParams();
try {
params.put("profile_picture", myFile);
} catch(FileNotFoundException e) {}
Run Code Online (Sandbox Code Playgroud)
但我必须使用multipart post将多个文件上传到服务器.我怎样才能做到这一点?
我正在使用LoopJ AndroidAsyncHttp下载图像,但是当我尝试使用HTTPS URL时,我没有得到任何响应.码:
AsyncHttpClient client = new AsyncHttpClient();
client.get(httpsUrlString, new BinaryHttpResponseHandler(allowedContentTypes) {
@Override
public void onSuccess(byte[] fileData) {
Bitmap bitmap = BitmapFactory.decodeByteArray(fileData, 0, fileData.length);
image.setImageBitmap(bitmap);
}
});
Run Code Online (Sandbox Code Playgroud) 在使用android-async-http图书馆时我偶然发现了params.add().
我已经使用params.put()了一段时间,它似乎比add()它允许除String之外的数据类型(如int,long,object,file)更好,而add()不是.
RequestParams params = new RequestParams();
// So how is this
params.add("param_a", "abc");
// different from this
params.put("param_a", "abc");
// and which one should I use?
Run Code Online (Sandbox Code Playgroud) 我正在使用AsyncHttpClient 链接进行http调用,但现在我们的服务器已迁移到HTTPS,我得到了异常javax.net.ssl.SSLPeerUnverifiedException: No peer certificate.有没有人尝试使用此库进行https调用?
AsyncHttpClient的初始化: -
AsyncHttpClient client = new AsyncHttpClient();
PersistentCookieStore myCookieStore = new PersistentCookieStore(
getActivity());
// List<Cookie> cookies = myCookieStore.getCookies();
myCookieStore.clear();
// cookies = myCookieStore.getCookies();
client.setCookieStore(myCookieStore);
client.get(loginUrl, new JsonHttpResponseHandler() {
@Override
public void onStart() {
super.onStart();
progressBar.setVisibility(View.VISIBLE);
}
@Override
public void onFinish() {
super.onFinish();
progressBar.setVisibility(View.GONE);
}
@Override
public void onSuccess(int statusCode, JSONObject userInfo) {
super.onSuccess(statusCode, userInfo);
String errorMsg = null;
try {
errorMsg = userInfo.getString("error");
} catch (JSONException e) {
e.printStackTrace();
}
if …Run Code Online (Sandbox Code Playgroud) 关于LoopJ AndroidAsyncHttp 示例,我发出这样的get请求:
final TextView text = (TextView) findViewById(R.id.textView);
AsyncHttpClient client = new AsyncHttpClient();
client.get("http://example.com/mypage/", new AsyncHttpResponseHandler() {
@Override
public void onSuccess(String response) {
text.append(response);
}
});
Run Code Online (Sandbox Code Playgroud)
我还添加了cookies:
PersistentCookieStore myCookieStore = new PersistentCookieStore(this);
client.setCookieStore(myCookieStore);
BasicClientCookie newCookie = new BasicClientCookie("id", 17882);
myCookieStore.addCookie(newCookie);
Run Code Online (Sandbox Code Playgroud)
但在提出GET请求时,如何在请求对象中发送我的cookie?
关于文档客户端有这些方法签名:
void get(Context context, String url, AsyncHttpResponseHandler responseHandler)
void get(Context context, String url, Header[] headers, RequestParams params, AsyncHttpResponseHandler responseHandler)
void get(Context context, String url, RequestParams params, AsyncHttpResponseHandler responseHandler)
void get(String url, AsyncHttpResponseHandler responseHandler)
void get(String …Run Code Online (Sandbox Code Playgroud) 我目前正在为我的Android应用程序使用Sugar ORM和Android Async Http Client.
我阅读了Sugar ORM的文档并完成了那里写的内容.我的HttpClient使用单例模式并提供调用某些API的方法.
现在是关于它的坏部分.我无法将数据持久保存到由Sugar ORM创建的数据库中.这是调用API的方法:
public void getAvailableMarkets(final Context context, final MarketAdapter adapter) {
String url = BASE_URL.concat("/markets.json");
client.addHeader("Content-Type", "application/json");
client.addHeader("Accept", "application/json");
client.get(context, url, null, new JsonHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, JSONArray response) {
Log.i(TAG, "Fetched available markets from server: " + response.toString());
Result<Markets> productResult = new Result<Markets>();
productResult.setResults(new Gson().<ArrayList<Markets>>fromJson(response.toString(),
new TypeToken<ArrayList<Markets>>() {
}.getType()));
ArrayList<Markets> marketsArrayList = productResult.getResults();
// This lines tells me that there are no entries …Run Code Online (Sandbox Code Playgroud)