我在服务器和客户端之间建立了一个https连接,其中客户端是一个java程序,服务器是一个servlet.我使用以下代码从服务器打印证书详细信息.
URL url = new URL("https://localhost:8443/cert");
HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
connection.setSSLSocketFactory(sslsocketfactory);
connection.setDoOutput(true);
if(connection!=null){
Certificate[] certs = connection.getServerCertificates();// #1
System.out.println("Cert Type : " + certs[0].getType());
System.out.println("Cert Hash Code : " + certs[0].hashCode());
System.out.println("Cert Public Key Algorithm : " + certs[0].getPublicKey().getAlgorithm());
System.out.println("Cert Public Key Format : " + certs[0].getPublicKey().getFormat());
System.out.println("\n");
}
Run Code Online (Sandbox Code Playgroud)
但我得到以下例外.
java.lang.IllegalStateException: connection not yet open
Run Code Online (Sandbox Code Playgroud)
我认为握手应该在调用theurl.openconnection()方法时立即进行.这里有什么问题?
异常抛出行号'#1'(参见上面代码中的注释)
我使用 PostgreSQL 作为我的数据库和 java servlet 与 PostgreSQL 进行通信。我的应用程序要求我从数据库中获取匹配输入文件的数据。所有文件都存储在数据库中的 bytea 列中。这是我的代码:
String checkdb="select * from key where certificate = '"+c+"';";
Statement stcheck=conn.createStatement(
ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
ResultSet newrs=stcheck.executeQuery(checkdb);
newrs.last();
int rowcount=newrs.getRow();
if(rowcount!=0)
throw new ArithmeticException();
Run Code Online (Sandbox Code Playgroud)
其中certificate是包含 bytea 数据的列的名称,c(上传)是byte[]表单中的证书。所以在这里我检查上传的证书是否已经存在于数据库中。如果它存在,那么我将抛出异常。
但问题是多次上传同一个证书并没有抛出异常,就像两个证书不同一样。
我是否正确比较了字节值。我应该怎么做才能纠正这个问题?
编辑
我尝试将证书列设置为主键。但是证书仍然被插入到数据库中。这怎么会发生?由于某种原因,内部比较也失败了。
编辑
我尝试检索一个文件并将其转换为字符串:
InputStream input13 = retrs.getBinaryStream("certificate");
ByteArrayOutputStream output13 = new ByteArrayOutputStream();
byte buf[]=new byte[1024];
int len;
IOUtils.copy(input13, output13);
input13.close();
byte[] retvalue=output13.toByteArray();
String s1=new String(retvalue);
String s2=new String(c);
System.out.println("in--------------"+s2);
System.out.println("out----------------"+s1);
Run Code Online (Sandbox Code Playgroud)
retrs 是包含刚刚存储的证书的结果集。c 是 byte[] 中的输入证书。我得到的输出是:
19:05:43,156 INFO …Run Code Online (Sandbox Code Playgroud) 我知道这句话的意思 __CODE__
但是这句话是什么
__CODE__
我试图寻找这个,但找不到答案.我想知道内部也会发生.
我想逐个字符地解析一个字符串。我正在使用 perl 来做到这一点。有什么办法可以从字符串的第一个字符开始,然后一个字符一个字符地循环。现在我已将字符串拆分为一个数组,并且正在遍历该数组。
$var="junk shit here. fkuc lkasjdfie.";
@chars=split("",$var);
Run Code Online (Sandbox Code Playgroud)
但是,不是在其自身之前拆分整个字符串,是否有任何描述符指向字符串的第一个字符然后遍历每个字符?有没有办法做到这一点?
我知道检查don't keep activities开发人员选项会使 android 系统在用户离开屏幕后立即终止活动 - 因此开发人员必须通过覆盖保存活动状态来处理此问题, onSaveInstance
但我不明白Background process limit. 它如何影响应用程序?作为开发人员,我选择“无后台进程”时该如何处理?
我需要转换随机生成的salt值并将其存储在数据库中.要将它存储在数据库中,我将其转换为字符串.然后,为了检索原始值,我将其转换回字节.但两个值都不匹配.我试过"UTF-8","UTF-16",BASE64Encoder.
SecureRandom ranGen = new SecureRandom();
byte[] aesKey = new byte[16]; // 16 bytes = 128 bits
ranGen.nextBytes(aesKey);
System.out.println(aesKey);
String a=new String(aesKey,"UTF-16");
byte[] b=new byte[16];
b=a.getBytes("UTF-16");
System.out.println(b);
Run Code Online (Sandbox Code Playgroud)
上述代码的输出(执行2次):
[B@11563ff
[B@1581593
Run Code Online (Sandbox Code Playgroud)
和
[B@170888e
[B@11563ff
Run Code Online (Sandbox Code Playgroud) 我正在使用URLConnection对象将数据从我的Android客户端发送到服务器.
URL url = new URL("http://10.0.2.2:8080/hello");
URLConnection connection = url.openConnection();
connection.setDoOutput(true);
ObjectOutputStream out=new ObjectOutputStream(connection.getOutputStream());
String s="check"+","+susername;
out.writeObject(s);
out.flush();
out.close();
Run Code Online (Sandbox Code Playgroud)
但我看到很多android程序使用httppost以下列方式发送数据.
HttpClient client=new DefaultHttpClient();
HttpPost httpPost=new HttpPost(LOGIN_ADDRESS);
List pairs=new ArrayList();
String strUsername=username.getText().toString();
String strPassword=password.getText().toString();
pairs.add(new BasicNameValuePair("username", strUsername));
pairs.add(new BasicNameValuePair("password", strPassword));
httpPost.setEntity(new UrlEncodedFormEntity(pairs));
HttpResponse response= client.execute(httpPost);
Run Code Online (Sandbox Code Playgroud)
请解释两者之间的差异.如何在servlet中接收后一种情况下的数据.请对这个HttpPost做一个简短的解释.在互联网上,我找到的只是代码.请逐步解释HttpPost及其方法,以及如何在servlet中接收数据.链接会很好.
我在JBoss中部署了servlet.我想根据客户端输入将数据读/写到文本文件中.该文本文件应放在JBoss目录结构中的哪个位置?
我正在android中创建一个用户表单.我想在单击按钮时显示编辑文本框.在该按钮下方,同时最初出现在该按钮下方的内容向下移动更多.
如何才能做到这一点?
我想更改 android studio 中编辑器窗口的默认字体大小。现在,每当我打开新文件时,我都会按“Ctrl + 滚动”并设置缩放比例。但我不想每次打开文件时都这样做。
有什么办法解决这个问题吗?