gpt4 book ai didi

Java Android HTTP POST登录错误

转载 作者:太空狗 更新时间:2023-10-29 13:33:13 25 4
gpt4 key购买 nike

我在登录用 asp 制作的网站时遇到问题...这是我正在使用的代码:

public class MainActivity extends Activity {
Button bottone;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bottone = (Button) findViewById(R.id.button1);
if (android.os.Build.VERSION.SDK_INT > 9) {
StrictMode.ThreadPolicy policy =
new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}
bottone.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) {
// starting new Async Task
try {
login();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
public static void login() throws IOException
{
String loginurl = "https://www.blurum.it/Web/", user, pass;
user = "tester55";
pass = "provapassword321";

DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(loginurl);

List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(3);
nameValuePairs.add(new BasicNameValuePair("ctrl_LoginControl$loginView$c01$RPLogin$LoginView$Username", user));
nameValuePairs.add(new BasicNameValuePair("ctrl_LoginControl$loginView$c01$RPLogin$LoginView$Password", pass));
nameValuePairs.add(new BasicNameValuePair("remember", "on"));
nameValuePairs.add(new BasicNameValuePair("ctrl_LoginControl$loginView$c01$RPLogin$LoginView$LoginButton", "Accedi"));



httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

// Execute HTTP Post Request
HttpResponse response = httpClient.execute(httpPost);
Log.d("logggd", "response stat code " + response.getStatusLine().getStatusCode());

if (response.getStatusLine().getStatusCode() < 400) {

String cookie = response.getFirstHeader("Cookie")
.getValue();
Log.d("logggdc", "cookie: " + cookie);

// get the contacts page
HttpGet getContacts = new HttpGet("https://www.blurum.it/Web/default.aspx");
getContacts.setHeader("Cookie", cookie);
response = httpClient.execute(getContacts);

InputStream ins = response.getEntity().getContent();
BufferedReader in = new BufferedReader(new InputStreamReader(
ins));

String inputLine;
while ((inputLine = in.readLine()) != null) {
Log.d("logggd1", " " + inputLine);
}

in.close();
} else {
Log.d("logggd2", "Response error: "
+ response.getStatusLine().getStatusCode());
}
}
}

但是我的应用程序崩溃了,所以我找不到代码中的错误...这是 logcat:

    11-12 20:05:37.678: W/dalvikvm(1806): threadid=1: thread exiting with uncaught exception (group=0xb4177180)
11-12 20:05:37.688: E/AndroidRuntime(1806): FATAL EXCEPTION: main
11-12 20:05:37.688: E/AndroidRuntime(1806): java.lang.NullPointerException
11-12 20:05:37.688: E/AndroidRuntime(1806): at com.example.testlogin.MainActivity.login(MainActivity.java:93)
11-12 20:05:37.688: E/AndroidRuntime(1806): at com.example.testlogin.MainActivity$1.onClick(MainActivity.java:53)
11-12 20:05:37.688: E/AndroidRuntime(1806): at android.view.View.performClick(View.java:3511)
11-12 20:05:37.688: E/AndroidRuntime(1806): at android.view.View$PerformClick.run(View.java:14105)
11-12 20:05:37.688: E/AndroidRuntime(1806): at android.os.Handler.handleCallback(Handler.java:605)
11-12 20:05:37.688: E/AndroidRuntime(1806): at android.os.Handler.dispatchMessage(Handler.java:92)
11-12 20:05:37.688: E/AndroidRuntime(1806): at android.os.Looper.loop(Looper.java:137)
11-12 20:05:37.688: E/AndroidRuntime(1806): at android.app.ActivityThread.main(ActivityThread.java:4424)
11-12 20:05:37.688: E/AndroidRuntime(1806): at java.lang.reflect.Method.invokeNative(Native Method)
11-12 20:05:37.688: E/AndroidRuntime(1806): at java.lang.reflect.Method.invoke(Method.java:511)
11-12 20:05:37.688: E/AndroidRuntime(1806): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
11-12 20:05:37.688: E/AndroidRuntime(1806): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
11-12 20:05:37.688: E/AndroidRuntime(1806): at dalvik.system.NativeStart.main(Native Method)
11-12 20:05:38.218: I/dalvikvm(1806): threadid=3: reacting to signal 3
11-12 20:05:38.228: I/dalvikvm(1806): Wrote stack traces to '/data/anr/traces.txt'

我使用 Tamper Data 将发布的数据提取到 firefox 中的服务器,这是一个屏幕,我认为登录分为 2 个帖子,这是屏幕: http://i.stack.imgur.com/GZiZ0.pnghttp://i.stack.imgur.com/FKH3P.png

我不确定我是否必须发送第一页或第二个帖子数据,这可能是错误吗?谢谢。

最佳答案

似乎 response.getFirstHeader("Cookie") 正在返回 null

根据 javadoc

Returns the first header with a specified name of this message. Header values are ignored. If there is more than one matching header in the message the first element of getHeaders(String) is returned. If there is no matching header in the message null is returned

解决方法:

在调用 getValue(); 之前做一个 null 检查

例子:

String cookie = null;
if(response.getFirstHeader("Cookie") != null)
{
cookie = response.getFirstHeader("Cookie")
.getValue();
}

关于Java Android HTTP POST登录错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13351307/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com