问题发生在服务器端,parseDelimitedFrom()调用.
客户端:
C2SGainCard.Builder s = C2SGainCard.newBuilder();
C2SGainCard c2s = s.build();
GameRequest.Builder reqBuilder=GameRequest.newBuilder();
reqBuilder.setBody(c2s.toByteString());
reqBuilder.setName(C2SGainCard.class.getSimpleName());
reqBuilder.setPlayerId("3");
GameRequest request=reqBuilder.build();
DataOutputStream os = new DataOutputStream(socket.getOutputStream());
os.write(request.toByteArray());
os.flush();
os.close();
socket.close();
Run Code Online (Sandbox Code Playgroud)
服务器端:
try{
DataInputStream is = new DataInputStream(socket.getInputStream());
GameRequest gameRequest = GameRequest.parseDelimitedFrom(is);
}catch(Exception ex){
System.out.println(ex.getMessage());
}
Run Code Online (Sandbox Code Playgroud)
这是另一个类似的问题:
客户端:
C2SSell.Builder s = C2SSell.newBuilder();
CardOnSell.Builder cardOnSell = CardOnSell.newBuilder();
cardOnSell.setId(1);
cardOnSell.setPlayerId(3);
cardOnSell.setCardId(1);
cardOnSell.setCurrentPrice(111);
cardOnSell.setFixedPrice(555);
cardOnSell.setDescription("cao");
s.setCardOnSell(cardOnSell.build());
C2SSell c2s = s.build();
Run Code Online (Sandbox Code Playgroud)
套接字处理是一样的.
服务器端:
DataInputStream is = new DataInputStream(socket.getInputStream());
byte[] b = new byte[1024];
int len=is.read(b);
String as = new …Run Code Online (Sandbox Code Playgroud) 这是我的rspec代码:
describe User do
before{(@user=User.new(username:"abcdefg",email:"123456@123.com",password:"123456")}
subject(@user)
@user.save
end
Run Code Online (Sandbox Code Playgroud)
我有这样一个错误: undefined method 'save' for nil:NilClass(NoMethodError)
我尝试在rails控制台中编写相同的代码,它只是起作用.但是当谈到Rspec时,它失败了,我找不到任何理由......
任何人都可以帮助我吗?
这是一个场景,一个用注释的控制器@RestController和一个需要验证参数的PUT方法@RequestBody。我@Valid在参数和 上使用注释@NotNull,@Min对 bean 字段使用注释,但它们不起作用。
代码在这里:
豆:
public class PurchaseWrapper {
@DecimalMin(value = "0.00",message = "discount must be positive")
@NotNull
private BigDecimal discount;
@NotNull
private Long merchandiseId;
@NotNull
private Long addressId;
@Min(1)
@NotNull
private Integer count;
}
Run Code Online (Sandbox Code Playgroud)
控制器
@RestController
@RequestMapping("merchandises")
public class MerchandiseController {
@RequestMapping(value = "purchase",method = RequestMethod.PUT)
public ResponseEntity<RestEntity> purchase(@Valid @Validated @RequestBody PurchaseWrapper purchaseWrapper,
@RequestParam String token){
return new ResponseEntity<>(merchandiseService.purchase(purchaseWrapper,token),HttpStatus.OK);
}
@Autowired
PurchaseWrapperValidator purchaseWrapperValidator;
@InitBinder(value = "purchaseWrapper") …Run Code Online (Sandbox Code Playgroud)