当我将项目导入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) 我看到这个错误在我的崩溃日志中出现了一周数百次,但我已经花了几个星期试图追逐错误而没有任何成功.我无法在任何设备上重现它.这是堆栈跟踪:
Posix.java:-2 in "libcore.io.Posix.recvfromBytes"
Posix.java:131 in "libcore.io.Posix.recvfrom"
BlockGuardOs.java:164 in "libcore.io.BlockGuardOs.recvfrom"
IoBridge.java:513 in "libcore.io.IoBridge.recvfrom"
PlainSocketImpl.java:489 in "java.net.PlainSocketImpl.read"
PlainSocketImpl.java:46 in "java.net.PlainSocketImpl.access$000"
PlainSocketImpl.java:241 in "java.net.PlainSocketImpl$PlainSocketInputStream.read"
AbstractSessionInputBuffer.java:103 in "org.apache.http.impl.io.AbstractSessionInputBuffer.fillBuffer"
AbstractSessionInputBuffer.java:191 in "org.apache.http.impl.io.AbstractSessionInputBuffer.readLine"
DefaultResponseParser.java:82 in "org.apache.http.impl.conn.DefaultResponseParser.parseHead"
AbstractMessageParser.java:174 in "org.apache.http.impl.io.AbstractMessageParser.parse"
AbstractHttpClientConnection.java:180 in "org.apache.http.impl.AbstractHttpClientConnection.receiveResponseHeader"
DefaultClientConnection.java:235 in "org.apache.http.impl.conn.DefaultClientConnection.receiveResponseHeader"
AbstractClientConnAdapter.java:259 in "org.apache.http.impl.conn.AbstractClientConnAdapter.receiveResponseHeader"
HttpRequestExecutor.java:279 in "org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse"
HttpRequestExecutor.java:121 in "org.apache.http.protocol.HttpRequestExecutor.execute"
DefaultRequestDirector.java:428 in "org.apache.http.impl.client.DefaultRequestDirector.execute"
AbstractHttpClient.java:555 in "org.apache.http.impl.client.AbstractHttpClient.execute"
AbstractHttpClient.java:487 in "org.apache.http.impl.client.AbstractHttpClient.execute"
AbstractHttpClient.java:465 in "org.apache.http.impl.client.AbstractHttpClient.execute"
Utilities.java:484 in "com.myapp.android.Utilities$8.run"
Run Code Online (Sandbox Code Playgroud)
这是错误来自的代码块......发生崩溃的确切位置是HttpResponse response = httpclient.execute(httppost);:
public static HttpPost postData(String URL, final List<NameValuePair> params, final Handler …Run Code Online (Sandbox Code Playgroud) java android android-asynctask androidhttpclient android-studio
对于API Level 9(Gingerbread)哪个更好,为什么?使用AndroidHttpClient而不是HttpUrlConnection有什么好处吗?
任何帮助或指导将不胜感激.
我正在研究这两个Android Http Networking库.
我想有些人使用这两个库的经验.就个人而言,我总是非常高兴地使用http://loopj.com/android-async-http/库.但最近我建议使用Volley Framework.
我可以从一个到另一个获得什么好处?
从我的阅读到目前为止,Volley在一个库中集成了许多不错的功能,如图像加载,请求缓存,请求取消.
我目前的使用案例/规格:
从我的Android应用程序中获取Web服务.
从SE上的一些阅读:
"Volley一切都很好,但从负面来看,它是一个没有文档记录,不受支持的,"将代码扔到墙上并对其进行I | O演示"库".
所以我认为它清晰的Volley可能会得到功能,但是记录和维护的程度如何呢?如果我决定使用它,4年后仍然会有它的支持吗?
我是 android 开发的新手,并试图通过改造库在 android 中调用本地 .NET web api 服务。在 IIS 上启动我的 web api 后,我收到此错误无法连接到 localhost/127.0.0.1 android。
当我按照建议的http://themakeinfo.com/2015/04/retrofit-android-tutorial/做同样的事情时,它工作正常,但我的本地主机服务没有从 android 调用
我的服务网址是, http://localhost:52511/api/Values/getAllStudents/5
它也在浏览器中为我提供了 XML 格式的输出。
我也试着用,
public interface gitapi {
@GET("/api/Values/GetProduct/{id}") //here is the other url part.best way is to start using /
public void getFeed(@Path("id") int id, Callback<gitmodel> response);
}
public class gitmodel {
public int studentId;
public String studentName;
public String studentAddress;
}
String API = "http://10.0.2.2:52511";
public void CallService(View view){
RestAdapter restAdapter = new RestAdapter.Builder().setEndpoint(API).build();
gitapi …Run Code Online (Sandbox Code Playgroud) 我有一个Web服务调用来关闭一个JSON对象,它只有在我有IP地址而不是主机名时才有效.我使用IP地址很好,但现在我需要拥有主机名.
这是我的代码
StringBuilder stringBuilder = new StringBuilder();
HttpParams httpParams = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParams, 3000);
HttpConnectionParams.setSoTimeout(httpParams, 7000);
DefaultHttpClient httpClient = new DefaultHttpClient(httpParams);
HttpPost httpost = new HttpPost(URL);
try {
HashMap<String,String> params = new HashMap<String,String>();
// Login info
params.put("username", edtUserName.getText().toString());
params.put("password", edtPass.getText().toString());
params.put("deviceOS", "Android");
params.put("deviceOSVersion", android.os.Build.VERSION.RELEASE);
params.put("language", "0");
//JSON object holding the login info
JSONObject holder = new JSONObject(params);
StringEntity se = new StringEntity(holder.toString());
httpost.setEntity(se);
httpost.setHeader("Content-Type", "application/json");
//Executing the call
HttpResponse response = httpClient.execute(httpost);
StatusLine statusLine = response.getStatusLine();
int statusCode = statusLine.getStatusCode(); …Run Code Online (Sandbox Code Playgroud) 客户报告了一个奇怪的错误.在AsyncTask中执行正常的AndroidHttpClient.execute()时,应用程序崩溃并获得以下堆栈跟踪
java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:299)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
at java.util.concurrent.FutureTask.run(FutureTask.java:239)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
at java.lang.Thread.run(Thread.java:841)
Caused by: java.lang.NullPointerException
at android.net.http.AndroidHttpClient.isMmsRequest(AndroidHttpClient.java:257)
at android.net.http.AndroidHttpClient.checkMmsSendPermission(AndroidHttpClient.java:290)
at android.net.http.AndroidHttpClient.execute(AndroidHttpClient.java:296)
at com.xxx.xxx.MyClass$MyHandler.doWork(MyClass.java:325)
at com.xxx.xxx.NetworkRequestHandler$AsyncTaskForRequestHandler.doInBackground(NetworkRequestHandler.java:532)
at com.xxx.xxx.utils.network.NetworkRequestHandler$AsyncTaskForRequestHandler.doInBackground(NetworkRequestHandler.java:1)
at android.os.AsyncTask$2.call(AsyncTask.java:287)
at java.util.concurrent.FutureTask.run(FutureTask.java:234)
... 3 more
Run Code Online (Sandbox Code Playgroud)
为什么调用checkMMSSendPermission和isSmsRequest?我们根本没有使用彩信和短信,而且应用程序没有这些权限,我想这就是它崩溃的原因.这适用于所有其他99.9%的用户.
代码看起来像这样
AndroidHttpClient client = AndroidHttpClient.newInstance(null);
InputStream inputStream = null;
try
{
HttpPost request = new HttpPost(urlString);
prepareURLRequest(request);
HttpResponse response = client.execute(request);
mResultStatus = response.getStatusLine().getStatusCode();
inputStream = response.getEntity().getContent();
...
Run Code Online (Sandbox Code Playgroud)
欢迎任何帮助
更新
这似乎只影响索尼Xperia Z,Z1和ZR手机.显然,在收到Android 4.3更新后问题就开始出现了.没有人使用这些手机可以使用我们的应用程序,但除此之外,它的工作原理.
与使用相同服务器端服务的iPhone App相比,HttpURLConnection.getInputStream需要花费大量时间。
以下代码用于该服务:
date= new java.util.Date();
Log.d("time","Time Stamp before posting "+new Timestamp(date.getTime()));
URL ur= new URL(url);
HttpURLConnection conn = (HttpURLConnection) ur.openConnection();
conn.setRequestProperty("Connection", "close");
conn.setReadTimeout(10000);
conn.setConnectTimeout(15000);
conn.setRequestMethod("POST");
conn.setDoInput(true);
conn.setDoOutput(true);
OutputStream os = conn.getOutputStream();
BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter(os, "UTF-8"));
writer.write(getQuery(nameValuePairs));
writer.close();
os.close();
conn.connect();
StringBuffer response=null;
try{
Log.d("time","Time Stamp bfr InputStream "+new Timestamp(date.getTime()));
InputStream is = conn.getInputStream();
date= new java.util.Date();
Log.d("time","Time Stamp aftr InputStream "+new Timestamp(date.getTime()));
BufferedReader rd = new BufferedReader(new InputStreamReader(is));
String line;
response = new StringBuffer();
while((line = …Run Code Online (Sandbox Code Playgroud) 我正在按照教程进行操作,并且我已经批准了很多代码.
ArrayList<NameValuePair> dataToSend = new ArrayList<>();
dataToSend.add(new BasicNameValuePair("name", user.name));
dataToSend.add(new BasicNameValuePair("age", user.age));
HttpParams httpRequestParams = new BasicHttpParams();
HttpConnectionParamas.setConnectionTimeout(httpRequestParams, CONNECTION_TIMEOUT);
HttpConnectionParamas.setSoTimeout(httpRequestParams, CONNECTION_TIMEOUT);
HttpClient client = new DefaultHttpClient(httpRequestParams);
HttpPost post = new HttpPost(SERVER_ADDRESS + "Register.php");
try{
post.setEntity(new UrlEncodedFormEntity(dataToSend));
client.execute(post);
}catch (Exception e){
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
和另一个返回结果的POST方法
HttpResponse httpResponse = client.execute(post);
HttpEntity entity = httpResponse.getEntity();
String result = EntityUtils.toString(entity);
JSONObject jObject = new JSONObject(result);
Run Code Online (Sandbox Code Playgroud)
我发现,我可以代替NameValuePair用
ContentValues values = new ContentValues();
values.put("name", user.name);
values.put("age", user.age + "");
Run Code Online (Sandbox Code Playgroud)
但我不知道其他人.
我怎样才能获得一个网站的HTML retrofit?
例如,我有这个网址,我需要得到这个网址的HTML,我怎么能加载更多.
贝娄是我的代码:
MainActivity.java:
public class MainActivity extends AppCompatActivity {
TextView txt;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
txt = (TextView) findViewById(R.id.txt);
OkHttpClient okHttpClient = new OkHttpClient().newBuilder()
.build();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://www.instagram.com/elde0596/")
.addConverterFactory(GsonConverterFactory.create())
.client(okHttpClient)
.build();
final Interface_Web request = retrofit.create(Interface_Web.class);
Call<ResponseBody> call = request.getHtml();
call.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
txt.setText(response.body().source().toString());
Log.i("SDADASDAWEQ", "A " + response.body().toString());
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
Log.i("SDADASDAWEQ", "B …Run Code Online (Sandbox Code Playgroud) android ×10
retrofit ×2
inputstream ×1
java ×1
retrofit2 ×1
sony ×1
sony-xperia ×1
unknown-host ×1