2008-10-14 6 views
1

PHP 코드에서 C#으로 작성된 웹 서비스를 호출하려는 고객이 있습니다. 웹 서비스 호출은 매개 변수로서 오래 걸립니다.긴 매개 변수를 사용하여 PHP에서 C# 웹 서비스 호출

이 호출은 C#이나 Java에서 호출하는 다른 고객에게는 제대로 작동하지만이 고객은 호출에서 오류가 발생합니다. 특정 호출을 디버깅하지는 못했지만 64 비트 정수가 PHP에서 어떻게 든 잘리는 것으로 추측됩니다. 고객은 문자열로 웹 서비스 호출을하고 있지만 PHP에는 유형 변환을하는 래퍼가 있다고합니다. 이것이 번호 정보를 잃어 버릴 수 있습니까?

감사합니다.

답변

1

대부분의 PHP 설치는 64 비트 정수를 지원하지 않습니다 - 32는 최대입니다. 이를 확인하려면 PHP_INT_SIZE 상수 (4 = 32 비트, 8 = 64 비트)를 읽거나 PHP_INT_MAX 값을 읽습니다.

<?php 

echo PHP_INT_SIZE, "\n", PHP_INT_MAX; 

?> 

자신이 사용하는 웹 서비스 클래스는 64 비트 정수의 문자열 표현을 입력-변환하려고하는 경우는, 다음 네, 대부분 가능성이 잘린 또는 부동 소수점으로 변환되는 것. 당신은 일종의 자신의 구현의 세부 사항을 모른 채이 간단한 테스트

<?php 

echo intval("123456789"); 
// prints 2147483647, the max value for a 32 bit signed int. 

으로이 동작을 볼 수 있습니다, 그것은 좋은 해결책/해결 될 일에 가정하는 것은 어렵다.

0

절대적으로 큰 숫자를 가져 와서 문자열로 만들고 웹 서비스에서 긴 것으로 변환해야하는 경우.

이것은 다른 사용자를 약간 괴롭히지 만, costumers를 사용하여 PHP를보다 친숙하게 만듭니다.

0

내가 C#을 웹 서비스를 호출 할 수 nuSoap를 사용하여 PHP에 관한 기사를 쓴 ... 아직 긴 INT 변환의 문제가 발생하지만하지 않았 필자는 필자가 필자가 필자의 기사에 추가해야 하는지를보기 위해 몇 가지 테스트를 수행 할 것입니다. 감사합니다. Sean http://seanmcilvenna.com/blog/7-general/24-windows-php-development