使用する必要のあるSOAPWebサービスのwsdlが与えられました。私はwsdlを使用して、NetBeansでWebサービスクラスを作成しました。
SOAPヘッダーには、ユーザー名とパスワードを持つServiceAuthHeaderが必要です。
NetBeansはServiceAuthHeaderクラスを生成しましたが、生成されたクラスを使用して送信されるSOAPメッセージにそれを追加する方法がわかりません。
私はそれをより低いレベルで行う方法を知っています。つまり、SOAPMEssageを作成し、ヘッダーを追加し、サービスに接続して送信しますが、これまでjwsを使用したことはありません。ドキュメントやチュートリアルのどこに追加するかを確認します。
生成されるServiceAuthHeaderは次のとおりです。
package com.theservice.webservice;
import java.util.HashMap;
import java.util.Map;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAnyAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
import javax.xml.namespace.QName;
/**
* <p>Java class for ServiceAuthHeader complex type.
*
* <p>The following schema fragment specifies the expected content contained within this class.
*
* <pre>
* <complexType name="ServiceAuthHeader">
* <complexContent>
* <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* <sequence>
* <element name="Username" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
* <element name="Password" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
* </sequence>
* <anyAttribute/>
* </restriction>
* </complexContent>
* </complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "ServiceAuthHeader", propOrder = {
"username",
"password"
})
public class ServiceAuthHeader {
@XmlElement(name = "Username")
protected String username;
@XmlElement(name = "Password")
protected String password;
@XmlAnyAttribute
private Map<QName, String> otherAttributes = new HashMap<QName, String>();
/**
* Gets the value of the username property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getUsername() {
return username;
}
/**
* Sets the value of the username property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setUsername(String value) {
this.username = value;
}
/**
* Gets the value of the password property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getPassword() {
return password;
}
/**
* Sets the value of the password property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setPassword(String value) {
this.password = value;
}
/**
* Gets a map that contains attributes that aren't bound to any typed property on this class.
*
* <p>
* the map is keyed by the name of the attribute and
* the value is the string value of the attribute.
*
* the map returned by this method is live, and you can add new attribute
* by updating the map directly. Because of this design, there's no setter.
*
*
* @return
* always non-null
*/
public Map<QName, String> getOtherAttributes() {
return otherAttributes;
}
}
したがって、これを使用してサービスを正常に呼び出すことができます。
private static PriceDetailRetunValue priceDetail(PriceDetailInputValue inputValue) {
com.theservice.webservice.WebService service = new com.theservice.webservice.WebService();
com.theservice.webservice.WebServiceSoap port = service.getWebServiceSoap12();
return port.priceDetail(inputValue);
}
応答を解析できます。もちろん、資格情報を提供する必要があることがわかります。
では、ServiceAuthHeaderを追加できるように、実際のSOAPヘッダーメッセージのハンドルを取得するにはどうすればよいですか?作成されたWebServiceのメソッドを調べて、リクエストコンテキストを取得できることを確認しました。また、httpリクエストヘッダーにクレデンシャルを追加する方法を確認しましたが、追加する場所を見つけることができませんでした。 SOAPMEssage。
どんな助けでもいただければ幸いです。ありがとう。