使用带有多个参数的ASN.1序列

时间:2013-05-20 18:22:54

标签: java asn.1

我尝试使用此代码发送和接收带有ASN.1生成类的Integer

客户端发送整数:

ClientFirstRequest h = new ClientFirstRequest();
h.clientInt.setValue(9);
BerOutputStream bos = new BerOutputStream(_socket.getOutputStream());
h.encode(bos);

服务器收到它:

ClientFirstRequest h = new ClientFirstRequest();
BerInputStream in = new BerInputStream(socket.getInputStream());
h.decode(in);
ASN1Integer ClientNumber= h.clientInt;
int clientNumbervalue = (int)ClientNumber.getValue();

它完美地工作,但在第二个序列中,我必须发送两个参数,一个Int和一个String

服务器发送整数和字符串

ServerFirstResponse response1 = new ServerFirstResponse();
response1.serverInt.setValue(clientNumbervalue);
response1.serverString.setValue(randomString);
BerOutputStream bos = new BerOutputStream(socket.getOutputStream());
h.encode(bos);

客户收到

ServerFirstResponse response1 = new ServerFirstResponse();
BerInputStream in = new BerInputStream(_socket.getInputStream());
response1.decode(in);

但我收到了错误

  

com.chaosinmotion.asn1.AsnFatalException:

     
    
      

在解码过程中,SEQUENCE的一个元素(或内部序列/集合的元素)不是可选的,也不是初始化的!       (如果存在)此元素的名称是:serverString at       com.turkcelltech.jac.Sequence.check_OptionalAndInitialized_Status(Sequence.java:259)         在       com.turkcelltech.jac.Sequence.fillSequenceVariables(Sequence.java:246)         在com.turkcelltech.jac.Sequence.decode(Sequence.java:105)at       Client.main(Client.java:54)

    
  

1 个答案:

答案 0 :(得分:0)

请与您使用的ASN.1工具的供应商联系。他们应该能够更好地处理使用ASN.1工具时的错误。每个ASN.1供应商都会以不同方式编写代码,即使最终结果应该是相同的编码字节流,无论您使用哪种工具。请注意,您尚未在此处指出您正在使用的ASN.1工具。