Java 获取http url连接错误
当我试图从服务器读取数据时,我收到错误400:从服务器读取数据时出现错误请求错误。虽然当为本地主机URL运行相同的代码时,它仍然可以正常工作 这是我的密码:Java 获取http url连接错误,java,xmlhttprequest,weblogic,httpconnection,Java,Xmlhttprequest,Weblogic,Httpconnection,当我试图从服务器读取数据时,我收到错误400:从服务器读取数据时出现错误请求错误。虽然当为本地主机URL运行相同的代码时,它仍然可以正常工作 这是我的密码: package xmlComm; import java.io.*; import java.net.*; import java.util.*; import java.text.*; import javax.xml.*; import javax.xml.rpc.Call; public class SampleXml {
package xmlComm;
import java.io.*;
import java.net.*;
import java.util.*;
import java.text.*;
import javax.xml.*;
import javax.xml.rpc.Call;
public class SampleXml {
public String TelXml(String msisdn,String region){
String temp="";
System.out.println(region);
try{
/*******************PARAMETER DECLARATION AND INITIALIZATION *******************************/
URL url = null;
String HOSTNAME=InetAddress.getLocalHost().getHostName().replaceAll("[\\-\\+\\.\\^:,]", "");
Date TIMESTAMP=new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyyMMddHHmmssSSSS");
String ORIGIN_TIMESTAMP=sdf1.format(TIMESTAMP);
String FINAL_DATE=ORIGIN_TIMESTAMP.substring(0, 8)+"T"+ORIGIN_TIMESTAMP.substring(8,10)+":"+ORIGIN_TIMESTAMP.substring(10,12)+":"+ORIGIN_TIMESTAMP.substring(12,14)+"+"+ORIGIN_TIMESTAMP.substring(14,18);
String TRANSACTION_ID=sdf.format(TIMESTAMP);
HttpURLConnection urlConn;
DataOutputStream printout;
BufferedReader input;
/********************************************************************************************/
url =new URL("server URL");// no problem in URL
urlConn =(HttpURLConnection)url.openConnection();
System.out.println(urlConn);
//urlConn.connect();
//urlConn.wait(2);
urlConn.setDoInput(true);
urlConn.setDoOutput(true);
urlConn.setUseCaches(false);
//java.util.Date dt = new java.util.Date();
// SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
// dateTime=formatter.format(dt);
//set request method
urlConn.setRequestMethod("POST");
//set request type
//urlConn.setRequestProperty("Content-Type", "application/xml");
//urlConn.setRequestProperty(key, value)
StringBuffer buf = new StringBuffer();
buf.append("POST /ABC/1.1\n"+
"User-Agent: ABC\n"+
"Authorization:Basic ABC\n"+
"Content-Type: text/xml\n"+
"Content-Length: 706\n\n"+
"<?xml version=\"1.0\"encoding=\"ISO-8859-1\"?>\n"+
"<methodCall>\n"+
"<methodName>MethodNameABC</methodName>\n"+
"<params>\n"+
"<param>\n"+
"<value>\n"+
"<struct>\n"+
"<member>\n"+
"<name>originNodeType</name>\n"+
"<value><string>EXT</string></value>\n"+
"</member>\n"+
"<member>\n"+
"<name>originHostName</name>\n"+
"<value><string>"+HOSTNAME+"</string></value>\n"+
"</member>\n"+
"<member>\n"+
"<name>originTransactionID</name>\n"+
"<value><string>"+TRANSACTION_ID+"</string></value>\n"+
"</member>\n"+
"<member>\n"+
"<name>originTimeStamp</name>\n"+
"<value><dateTime.iso8601>"+FINAL_DATE+"</dateTime.iso8601></value>\n"+
"</member>\n"+
"<member>\n"+
"<name>subscriberNumber</name>\n"+
"<value><string>"+msisdn+"</string></value>\n"+
"</member>\n"+
"</struct>\n"+
"</value>\n"+
"</param>\n"+
"</params>\n"+
"</methodCall>");
String Inpt = buf.toString();
System.out.println("********************************* Request ********************************");
System.out.println(Inpt);
printout = new DataOutputStream(urlConn.getOutputStream());
printout.writeBytes(Inpt);
printout.flush ();
printout.close ();
//Get response data.
input = new BufferedReader(new InputStreamReader(urlConn.getInputStream()));
String str;
while((str = input.readLine())!=null){
str += input.readLine();
if(str!=null){
temp=str;
}
}
System.out.println("********************************* Response ********************************");
System.out.println(temp);
}
catch (MalformedURLException me{
System.err.println("MalformedURLException; " + me);
}
catch (IOException ioe){
System.err.println("IOException; " + ioe.getMessage());
}
String returnmsg = "abcc";
return returnmsg;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
SampleXml Sxml= new SampleXml();
Sxml.TelXml("1234567890", "City");
}
}
包xmlComm;
导入java.io.*;
导入java.net。*;
导入java.util.*;
导入java.text.*;
导入javax.xml.*;
导入javax.xml.rpc.Call;
公共类SampleXml{
公共字符串TelXml(字符串msisdn,字符串区域){
字符串temp=“”;
系统输出打印LN(区域);
试一试{
/*******************参数声明和初始化*******************************/
URL=null;
字符串HOSTNAME=InetAddress.getLocalHost().getHostName().replaceAll(“[\\-\+\\.\\^:,]”,“”);
日期时间戳=新日期();
SimpleDataFormat sdf=新的SimpleDataFormat(“yyyymmddhhmmssss”);
SimpleDataFormat sdf1=新的SimpleDataFormat(“yyyymmddhhmmsssss”);
字符串来源\时间戳=sdf1.format(时间戳);
字符串FINAL_DATE=ORIGIN_TIMESTAMP.substring(0,8)+“T”+ORIGIN_TIMESTAMP.substring(8,10)+“:”+ORIGIN_TIMESTAMP.substring(10,12)+“:”+ORIGIN_TIMESTAMP.substring(12,14)+“+”+ORIGIN u TIMESTAMP.substring(14,18);
字符串事务_ID=sdf.format(时间戳);
httpurlconn;
数据输出流打印输出;
缓冲读取器输入;
/********************************************************************************************/
url=新url(“服务器url”);//url中没有问题
urlConn=(HttpURLConnection)url.openConnection();
System.out.println(urlConn);
//urlConn.connect();
//urlConn.等待(2);
urlConn.setDoInput(true);
urlConn.setDoOutput(真);
urlConn.setUseCaches(false);
//java.util.Date dt=new java.util.Date();
//SimpleDataFormat格式化程序=新的SimpleDataFormat(“dd/MM/yyyy HH:MM:ss”);
//dateTime=formatter.format(dt);
//设置请求方法
urlConn.setRequestMethod(“POST”);
//设置请求类型
//setRequestProperty(“内容类型”、“应用程序/xml”);
//urlConn.setRequestProperty(键、值)
StringBuffer buf=新的StringBuffer();
buf.append(“POST/ABC/1.1\n”+
“用户代理:ABC\n”+
“授权:基本ABC\n”+
“内容类型:text/xml\n”+
“内容长度:706\n\n”+
“\n”+
“\n”+
“MethodNameABC\n”+
“\n”+
“\n”+
“\n”+
“\n”+
“\n”+
“originNodeType\n”+
“外部\n”+
“\n”+
“\n”+
“原始主机名\n”+
“”+主机名+“\n”+
“\n”+
“\n”+
“originTransactionID\n”+
“+事务\u ID+”\n”+
“\n”+
“\n”+
“原始时间戳\n”+
“+最终日期+”\n”+
“\n”+
“\n”+
“subscriberNumber\n”+
“+msisdn+”\n”+
“\n”+
“\n”+
“\n”+
“\n”+
“\n”+
"");
字符串Inpt=buf.toString();
System.out.println(“*************************************************************************************************************************”);
系统输出打印项次(输入);
printout=newdataoutputstream(urlConn.getOutputStream());
打印输出。写入字节(输入);
printout.flush();
printout.close();
//获取响应数据。
输入=新的BufferedReader(新的InputStreamReader(urlConn.getInputStream());
字符串str;
而((str=input.readLine())!=null){
str+=input.readLine();
如果(str!=null){
temp=str;
}
}
System.out.println(“************************************************************响应*************************************”);
系统输出打印项次(温度);
}
抓住我{
System.err.println(“MalformedURLException;”+me);
}
捕获(ioe异常ioe){
System.err.println(“IOException;”+ioe.getMessage());
}
字符串returnmsg=“abcc”;
returnmsg;
}
公共静态void main(字符串[]args){
//TODO自动生成的方法存根
SampleXml Sxml=新的SampleXml();
TelXml(“1234567890”,“城市”);
}
}
//urlConn.setRequestProperty(“内容类型”,“应用程序/xml”);您能取消注释并重试吗?嗨,安卓,取消注释的结果相同。更重要的是,当我在进行连接后打印响应代码时,它返回以下内容。urlConn=(HttpURLConnection)url.openConnection();int code=urlConn.getResponseCode();System.out.println(“服务器连接代码是“+代码”);错误是服务器连接代码是411线程“Main thread”java.lang.IllegalStateException中的异常:已连接到xmlComm.TelcordiaXml.TelXml(TelcordiaXml.java:50)的java.net.URLConnection.setDoInput(URLConnection.java:819)(TelcordiaXml.java:161)如果我没有错,那么你正在尝试向服务器写入一些内容,对吗?是的,我必须向服务器发送一个XML并获得响应。我是通过输入输出数据流来完成的。可能存在一些权限问题,因为正如你所说的,它在本地主机中工作正常。