小编Ash*_*win的帖子

打印服务器证书详细信息时出现异常

我在服务器和客户端之间建立了一个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'(参见上面代码中的注释)

java ssl https certificate

5
推荐指数
1
解决办法
4717
查看次数

将字节值与 postgresql 中的字节列进行比较

我使用 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)

java postgresql servlets

5
推荐指数
1
解决办法
3922
查看次数

什么是scanf中的%2d

我知道这句话的意思
__CODE__
但是这句话是什么
__CODE__
我试图寻找这个,但找不到答案.我想知道内部也会发生.

c scanf

5
推荐指数
1
解决办法
4万
查看次数

在 Perl 中逐字符解析字符串

我想逐个字符地解析一个字符串。我正在使用 perl 来做到这一点。有什么办法可以从字符串的第一个字符开始,然后一个字符一个字符地循环。现在我已将字符串拆分为一个数组,并且正在遍历该数组。

$var="junk shit here. fkuc lkasjdfie.";
@chars=split("",$var);
Run Code Online (Sandbox Code Playgroud)

但是,不是在其自身之前拆分整个字符串,是否有任何描述符指向字符串的第一个字符然后遍历每个字符?有没有办法做到这一点?

perl

5
推荐指数
1
解决办法
996
查看次数

不保留活动和后台进程限制有什么区别。从开发者的角度?

我知道检查don't keep activities开发人员选项会使 android 系统在用户离开屏幕后立即终止活动 - 因此开发人员必须通过覆盖保存活动状态来处理此问题, onSaveInstance
但我不明白Background process limit. 它如何影响应用程序?作为开发人员,我选择“无后台进程”时该如何处理?

android

5
推荐指数
1
解决办法
2141
查看次数

字节到字符串,反之亦然

我需要转换随机生成的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)

java encoding bytearray character-encoding

4
推荐指数
1
解决办法
3734
查看次数

在Android客户端中使用URLCOnnection对象和Httppost之间的差异

我正在使用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中接收数据.链接会很好.

android urlconnection http-post

4
推荐指数
1
解决办法
3609
查看次数

在servlet中读/写文本文件,该文件应该存储在JBoss中?

我在JBoss中部署了servlet.我想根据客户端输入将数据读/写到文本文件中.该文本文件应放在JBoss目录结构中的哪个位置?

jboss servlets

4
推荐指数
1
解决办法
4089
查看次数

单击按钮显示编辑文本框

我正在android中创建一个用户表单.我想在单击按钮时显示编辑文本框.在该按钮下方,同时最初出现在该按钮下方的内容向下移动更多.
如何才能做到这一点?

android android-edittext

4
推荐指数
1
解决办法
2万
查看次数

是否可以为 android studio 中的编辑器设置默认缩放?

我想更改 android studio 中编辑器窗口的默认字体大小。现在,每当我打开新文件时,我都会按“Ctrl + 滚动”并设置缩放比例。但我不想每次打开文件时都这样做。

有什么办法解决这个问题吗?

settings android editor shortcut android-studio

4
推荐指数
1
解决办法
1589
查看次数