Java 关于使用“过帐”过帐数据的问题;NameValuePair“;
我用java方法编写,负责发送Java 关于使用“过帐”过帐数据的问题;NameValuePair“;,java,http-post,httpclient,Java,Http Post,Httpclient,我用java方法编写,负责发送POSTlikeajax public String getWebInfo() { DefaultHttpClient httpclient = null; String out = null; try { System.out.println("send started"); httpclient = new DefaultHttpClient(); Credentials cred =
POST
likeajax
public String getWebInfo() {
DefaultHttpClient httpclient = null;
String out = null;
try {
System.out.println("send started");
httpclient = new DefaultHttpClient();
Credentials cred = new UsernamePasswordCredentials("user", "password");
httpclient.getCredentialsProvider().setCredentials(
new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT, AuthScope.ANY_REALM),
cred);
HttpPost httpost = new HttpPost("https://page/php/data.ajax.php");
List <NameValuePair> nvps = new ArrayList <NameValuePair>();
nvps.add(new BasicNameValuePair("action", "1"));
nvps.add(new BasicNameValuePair("name", "2"));
UrlEncodedFormEntity entityU = new UrlEncodedFormEntity(nvps);
entityU.setContentEncoding(HTTP.UTF_8);
//entityU.setContentType("application/json");
httpost.setEntity(entityU);
System.out.println("send about to do post");
HttpResponse response = httpclient.execute(httpost);
System.out.println("send post done");
HttpEntity entity = response.getEntity();
if (entity != null) {
System.out.println("response.getStatusLine: " + response.getStatusLine());
InputStream is = entity.getContent();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line = null;
while ( (line = br.readLine()) != null) {
System.out.println("Response: " + line);
out = line;
}
is.close();
} else {
System.out.println("Response: response is null");
}
} catch (Exception e) {
e.getStackTrace();
}
if (httpclient != null) {
httpclient.getConnectionManager().shutdown();
}
return out;
}
服务器端
从我在msqLogFile(“page/post”,Array('post'=>urldecode(内爆(“,”,$\u post)))上的日志代码>
我只获取不带密钥的数据:
"2013-05-02 04:21:09","1,2"
它应该是json数据:
从tail-f/etc/httpd/logs/ssl\u请求\u log
82.80.25.130 TLSv1 AES128-SHA "POST /page/php/data.ajax.php HTTP/1.1" 484
82.80.25.130 TLSv1 AES128-SHA "POST /page/php/data.ajax.php HTTP/1.1" 3
当我取消对entityU.setContentType(“应用程序/json”)的注释时代码>,我没有得到任何数据
从javascript开始,一切正常:
var json = JSON.stringify({action: 1,name: 2});
$.ajax({
type: "POST",
url: "/page/php/data.ajax.php",
dataType:"json",
data:{data:json},
success:function(data){
我得到的回应是:
"2013-05-02 04:21:09","{"action":1,"name":2}"
public String getWebInfo() {
DefaultHttpClient httpclient = null;
String out = null;
try {
System.out.println("send started");
httpclient = new DefaultHttpClient();
Credentials cred = new UsernamePasswordCredentials("user", "password");
httpclient.getCredentialsProvider().setCredentials(
new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT, AuthScope.ANY_REALM),
cred);
HttpPost httpost = new HttpPost("https://page/php/data.ajax.php");
JSONObject jsonObj = new JSONObject();
jsonObj.put("action", 1);
jsonObj.put("name", 2);
List <NameValuePair> nvps = new ArrayList <NameValuePair>();
nvps.add(new BasicNameValuePair("data", jsonObj.toString()));
UrlEncodedFormEntity entityU = new UrlEncodedFormEntity(nvps);
entityU.setContentEncoding(HTTP.UTF_8);
//entityU.setContentType("application/json");
httpost.setEntity(entityU);
System.out.println("send about to do post");
HttpResponse response = httpclient.execute(httpost);
System.out.println("send post done");
HttpEntity entity = response.getEntity();
if (entity != null) {
System.out.println("response.getStatusLine: " + response.getStatusLine());
InputStream is = entity.getContent();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line = null;
while ( (line = br.readLine()) != null) {
System.out.println("Response: " + line);
out = line;
}
is.close();
} else {
System.out.println("Response: response is null");
}
} catch (Exception e) {
e.getStackTrace();
}
if (httpclient != null) {
httpclient.getConnectionManager().shutdown();
}
return out;
}
我的问题在哪里
谢谢,我找到了解决办法,但假设有人会找到更好的答案:
"2013-05-02 04:21:09","{"action":1,"name":2}"
public String getWebInfo() {
DefaultHttpClient httpclient = null;
String out = null;
try {
System.out.println("send started");
httpclient = new DefaultHttpClient();
Credentials cred = new UsernamePasswordCredentials("user", "password");
httpclient.getCredentialsProvider().setCredentials(
new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT, AuthScope.ANY_REALM),
cred);
HttpPost httpost = new HttpPost("https://page/php/data.ajax.php");
JSONObject jsonObj = new JSONObject();
jsonObj.put("action", 1);
jsonObj.put("name", 2);
List <NameValuePair> nvps = new ArrayList <NameValuePair>();
nvps.add(new BasicNameValuePair("data", jsonObj.toString()));
UrlEncodedFormEntity entityU = new UrlEncodedFormEntity(nvps);
entityU.setContentEncoding(HTTP.UTF_8);
//entityU.setContentType("application/json");
httpost.setEntity(entityU);
System.out.println("send about to do post");
HttpResponse response = httpclient.execute(httpost);
System.out.println("send post done");
HttpEntity entity = response.getEntity();
if (entity != null) {
System.out.println("response.getStatusLine: " + response.getStatusLine());
InputStream is = entity.getContent();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line = null;
while ( (line = br.readLine()) != null) {
System.out.println("Response: " + line);
out = line;
}
is.close();
} else {
System.out.println("Response: response is null");
}
} catch (Exception e) {
e.getStackTrace();
}
if (httpclient != null) {
httpclient.getConnectionManager().shutdown();
}
return out;
}
公共字符串getWebInfo(){
DefaultHttpClient httpclient=null;
String out=null;
试一试{
System.out.println(“发送已启动”);
httpclient=新的DefaultHttpClient();
Credentials cred=新用户名PasswordCredentials(“用户”、“密码”);
httpclient.getCredentialsProvider().setCredentials(
新的AuthScope(AuthScope.ANY_主机、AuthScope.ANY_端口、AuthScope.ANY_域),
信用卡);
HttpPost HttpPost=新的HttpPost(“https://page/php/data.ajax.php");
JSONObject jsonObj=新的JSONObject();
jsonObj.put(“行动”,1);
jsonObj.put(“名称”,2);
List-nvps=newarraylist();
add(新的BasicNameValuePair(“data”,jsonObj.toString());
UrlEncodedFormEntity entityU=新的UrlEncodedFormEntity(nvps);
setContentEncoding(HTTP.UTF_8);
//setContentType(“应用程序/json”);
httpost.setEntity(entityU);
System.out.println(“发送即将发送的邮件”);
HttpResponse response=httpclient.execute(httpost);
System.out.println(“发送邮件完成”);
HttpEntity=response.getEntity();
如果(实体!=null){
System.out.println(“response.getStatusLine:+response.getStatusLine());
InputStream=entity.getContent();
InputStreamReader isr=新的InputStreamReader(is);
BufferedReader br=新的BufferedReader(isr);
字符串行=null;
而((line=br.readLine())!=null){
System.out.println(“响应:+行);
out=行;
}
is.close();
}否则{
System.out.println(“响应:响应为空”);
}
}捕获(例外e){
e、 getStackTrace();
}
if(httpclient!=null){
httpclient.getConnectionManager().shutdown();
}
返回;
}
很好,你找到了它。我读了这篇文章,看看你们是如何测试的,并提出了一个建议
如果您正在使用大量http,那么您将在dev中获得良好的结果,因为您能够卷曲所有表达式,以查看您的跨网络工作流是否正常。如果需要,您的单元测试可以包括Bash脚本,这些脚本只发送一大串http流量
在java中,您需要找到一种切换http日志的方法,以便您的普通记录器可以编写如下所示的头/线语句——请参阅accept ans--
您将清楚地看到服务器的所有标题和FRM,以及连接到/FRM服务器的线路上的所有主体信息,这些信息在您的正常记录器中以“方向”显示
弄清楚怎么做很难,但当你弄明白的时候,我觉得值得一读
您是否使用Wireshark来查看实际发生的情况?我怀疑您的nvp对象没有被正确序列化。我试图只发送json数据,但通过这种方式POST是空的